Animating visuals with Tween
A landing pulse changes Visual without scaling the body or CollisionShape3D.
Separate graphics from physics
In the player hierarchy, the mesh is inside Visual, while the main CollisionShape3D is its sibling directly under the body. Scaling Visual therefore changes graphics without resizing the capsule.
Attach Scripts/LandingPulse.cs to Visual, an Entity3D:
using Reckfell;
public partial class LandingPulse : Entity3D
{
private Tween? _tween;
public void Pulse()
{
ResetVisual();
_tween = CreateTween();
_tween.SetTrans(Tween.TransitionType.Quad).SetEase(Tween.EaseType.Out);
_tween.TweenProperty(this, "scale", new Vector3(1.15f, 0.8f, 1.15f), 0.08);
_tween.TweenProperty(this, "scale", Vector3.One, 0.12);
}
public void ResetVisual()
{
if (_tween != null && _tween.IsValid())
_tween.Kill();
_tween = null;
Scale = Vector3.One;
}
public override void _ExitTree() => ResetVisual();
}Invocation
SquashPlayer gets this class in _Ready() and calls Pulse() on landing after a fall. CreateTween() creates a Tween bound to this entity. The first stage widens and shortens the image over 0.08 seconds; the second restores scale 1 over 0.12 seconds.
"scale" is an engine property path for TweenProperty(), not a local-variable name or translated inspector label. Values are Vector3 and durations are in seconds.
Retriggering and deletion
Before another animation, ResetVisual() kills the old Tween and restores scale 1. Otherwise several animations can modify the same property concurrently. An aborted Tween is not reused; each Pulse() creates a new one.
Reset also runs on player restart and when Visual exits the tree. Kill() alone does not restore the initial property value; Scale = Vector3.One does that explicitly.
Expected result: landing briefly changes visible proportions while movement and collision geometry remain unchanged. If physics size changes, check that the script is attached to child Visual and that the shape is not under it. Recorded clips and skeletal animation use other tools; this example demonstrates procedural property animation.