Quick answer: Set set_parallel(true) on the Tween for parallel mode. Use chain() to break into a sequential block. Sequence: parallel group A → chain → parallel group B → chain → finish.
You expect a flash and shake at the same time. Tween runs them in sequence: flash then shake. set_parallel wasn’t enabled on the Tween.
The Symptom
tween_property calls that should run together run sequentially. Or chain() doesn’t produce a clean sequential break between groups.
The Fix
var t := create_tween().set_parallel(true)
# Parallel group 1: flash and shake at the same time
t.tween_property(self, "modulate", Color.WHITE, 0.1)
t.tween_property(self, "position", position + Vector2(10, 0), 0.05)
t.chain()
# Parallel group 2: fade and settle
t.tween_property(self, "modulate", normal_color, 0.2)
t.tween_property(self, "position", position, 0.1)
Group 1 runs in parallel. chain() waits for both to finish. Group 2 starts. Both finish independently.
Per-Call Parallel Override
var t := create_tween()
t.tween_property(self, "modulate", Color.RED, 0.2)
t.parallel().tween_property(self, "scale", Vector2(1.2, 1.2), 0.2)
parallel() applies to the next tween_property only. Useful for one-off parallel pairs without flipping the whole Tween mode.
Verifying
Watch the animation. Properties in a parallel group should change simultaneously. With set_parallel(false) (default) they sequence. Toggle to confirm.
“set_parallel for groups. chain between. parallel() for one-offs.”
Related Issues
For Tween callback, see Tween callback. For AnimationTree travel, see AnimationTree.
Parallel inside, chain between. Animations sync.