Studio

FolioTier 2

@headshake

Sway a sprite's head side to side - a beat of disagreement or disbelief.

@headshake plays a short side-to-side sway on a sprite, reading to the viewer as a no - a beat of refusal, skepticism, or quiet disbelief. Reach for it when a character's body language needs to carry emotional weight alongside or just after a line, or when you want the reaction visible before the next beat of dialogue arrives.

The defaults land somewhere between conversational and firm, which suits most scenes. Pull intensity down for a hesitant, uncertain gesture; push it up when the denial is sharp or the disbelief is genuine. Trim duration for a quick, throwaway brush-off and leave it longer when the moment deserves a pause.

Because wait defaults to false, the sway fires and the scene continues immediately - the animation and the next say will run at the same time. Set wait to true whenever the headshake needs to finish before anything else happens, such as a deliberate beat of silence after a refusal.

@headshake targets a single sprite tag, so if the same character appears under more than one tag, call the effect on each tag separately or only the tagged instance will animate. For reactions driven by impact or sudden fright rather than social disagreement, @shake is the closer tool - it rattles the full sprite and reads as physical rather than expressive.

Parameters

ParameterKindRequiredDefaultNotes
targetstringyes""Sprite tag to target.
intensitynumberno0.70-1 × multiplier. Default 0.7.
durationnumberno0.450.2-1.5 seconds. Default 0.45.
waitbooleannotrueBlock for the effect's duration when true; false fires and continues so effects can overlap.

Canonical example

sprite show ada
say "Ada": "No way."
@headshake(target=ada)

@headshake sways the sprite that target matches from side to side, then settles back to rest. It reads as disagreement or disbelief - the "no" to @nod's "yes" - without swapping the sprite's state image.

intensity scales how far the sway travels (0.7 is the everyday default); duration is how long it runs. Keep both modest so the beat reads as body language, not a glitch.

Notes

@headshake is a gesture effect - a one-shot reaction that returns the sprite exactly where it started. Distinct from @shake, which is a decaying jitter (impact tremble) rather than a deliberate head movement. It runs on the Pixi stage.

See also

  • @nod - the "yes" counterpart
  • @shake - impact jitter, not a head gesture
  • sprite - mounts the sprite that target matches