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 <noreply@anthropic.com>
adminandClaude Opus 5.5 committed 2026-10-05 22:05:12 +02:00
1 parent e02851255c
commit 0598820af7
4 files changed
+21 -8

No files matched your search

+3
@@ -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
+6 -4
@@ -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
+2 -1
@@ -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.
+10 -3
@@ -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.