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.