From 0598820af79d071165cd53f7c4d4aa82ee4c04a7 Mon Sep 17 00:00:00 2001 From: MelekTaus Date: Mon, 5 Oct 2026 22:05:12 +0200 Subject: [PATCH] Describe the easings shared by keys, Lerp and sound FX ramps A Lerp and a timed Set sound FX parameters now offer the same easings as an animation key. - Behaviors: Lerp has Easing, Direction and Curve like a key. - Sounds: the easing of a timed change, Step as a jump at the end. - Curves and Animations point to the same choice on both nodes. Co-Authored-By: Claude Opus 5.5 --- Animations.md | 3 +++ Behaviors.md | 10 ++++++---- Curves.md | 3 ++- Sounds.md | 13 ++++++++++--- 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/Animations.md b/Animations.md index 20d0505..2c4eed2 100644 --- a/Animations.md +++ b/Animations.md @@ -69,6 +69,9 @@ key. The inspector shows it as two fields: *In-out* is slow at both ends and halfway at half the time. A new curve keeps the direction the key had; a key that was linear or a step gets *In-out*. +The same choice stands on a `Lerp` node and on `Set sound FX parameters` (see +[Behaviors](Behaviors) and [Sounds](Sounds)). + How strongly a curve bends, at half the time going *In*: Sine 0.29 of the way, Quad 0.25, Cubic 0.125, Quart 0.06, Quint 0.03, Expo 0.03, Circ 0.13. *Out* is the same curve mirrored, *In-out* runs the *In* curve on the first half and the *Out* curve on the second. *Back* first pulls back diff --git a/Behaviors.md b/Behaviors.md index 0b2d37a..eba1932 100644 --- a/Behaviors.md +++ b/Behaviors.md @@ -222,10 +222,12 @@ the inspector). children of an object; with **recursive** every object below it, level by level) and `Objects of asset` (every instance of the chosen asset, spawned ones included), `Variables`, `Properties` (every property row of the target's type, the transform rows `scale`, `rotation`, `mirrorX`, `mirrorY` included — how a graph turns a sprite), `Get position` (local to the parent), `Get world position` (in world units), `Get Z` (the object's own `z` and `world z`, summed up with its parents'), `Is enabled`, literals `Number`/`Text`/`Boolean`/`Texture`/`State machine`/`Sound`/`Scene`/`Animation`/`Asset`, `Texture size` (a texture's, frame's or pixel art's own size in pixels, 0 for none — wired into a sprite's `width`/`height`, a picture shows pixel for pixel), `Add/Subtract/Multiply/Divide`, - `Min/Max/Abs/Sqrt/Clamp`, `Lerp` (from a to b as t runs from 0 to 1, t held in 0…1; the setting - *Ease* bends the way: *Linear*, *In* starts slow, *Out* ends slow, *In-out* both, all quadratic, - or *Curve*, which follows the [curve asset](Curves) picked in the *Curve* row and may overshoot b; - with none picked, or once it is gone, it runs linear and says so on the node — + `Min/Max/Abs/Sqrt/Clamp`, `Lerp` (from a to b as t runs from 0 to 1, t held in 0…1; the settings + *Easing* and *Direction* bend the way with exactly the choice an + [animation key](Animations) has: *Linear*, *Step* (stays at a until t is 1), the ten curves from + *Sine* to *Bounce* with *In*, *Out* or *In-out*, or *Curve*, which follows the + [curve asset](Curves) picked in the *Curve* row. *Back*, *Elastic* and a curve may overshoot b; + a Curve with none picked, or once it is gone, runs linear and says so on the node — one node where a slide or a flight used to take a Subtract, a Multiply and an Add per axis), `Floor/Ceil/Round`, `Modulo`, `Random`, `Time`, `To text`, `To number`, `Join text`, `Substring`, `Find text`, `Equals`, `First not empty` (a, unless a is empty, then b; the setting diff --git a/Curves.md b/Curves.md index ce41c7b..a905bd5 100644 --- a/Curves.md +++ b/Curves.md @@ -1,5 +1,6 @@ A **curve asset** is an easing you draw yourself. Wherever the editor offers a built-in ease — the -**Easing** of an animation key, the **Ease** of a `Lerp` node — it also offers **Curve**, and then +**Easing** of an animation key, of a `Lerp` node and of a `Set sound FX parameters` node — it also +offers **Curve**, and then the value runs along your drawing instead: overshoot and settle twice, hesitate in the middle, anything that has one value for every moment. diff --git a/Sounds.md b/Sounds.md index 4ac7440..599721b 100644 --- a/Sounds.md +++ b/Sounds.md @@ -174,9 +174,16 @@ speed, or a loop that gets quieter. - With `time` at 0, every value **glides** there in about 0.1 s (`setTargetAtTime`, 30 ms time constant), so a jump does not click. A value that did not change is not sent again, so running it every frame costs next to nothing. -- **`time`** is how many seconds the values take to get there, evenly: a pitch in semitones, a - Gain in dB, a band and a Mix in what they hold. It runs on the clock of the sound itself, not on - the game's, so a sweep sounds the same every time, also the first. For a sweep, set it once +- **`time`** is how many seconds the values take to get there: a pitch in semitones, a Gain in + dB, a band and a Mix in what they hold. It runs on the clock of the sound itself, not on the + game's, so a sweep sounds the same every time, also the first. +- **Easing** and **Direction** say how the values get there, with the same choice an + [animation key](Animations) and a `Lerp` have. *Linear* (the default) runs evenly, *Step* holds + the old value for the whole `time` and then jumps, the ten curves from *Sine* to *Bounce* and a + drawn [Curve](Curves) bend the way. Linear and Step are ramps of the audio clock itself, every + other easing is handed to it as a curve of 200 samples a second (`setValueCurveAtTime`). *Back*, + *Elastic* and a curve may shoot past the target and come back. The easing says nothing while + `time` is 0. For a sweep, set it once right after `Play sound`: `On enable` → `Play sound` → `Set sound FX parameters` (`voice` from `Play sound`, `pitch` -64, `time` 1.28) falls by 50 semitones a second. Counting a value down in `On update` or `On fixed update` instead runs on game time, and the sound drifts away from it.