Controlling an animation's "Motion Time" a la Unity

Godot Version

4.4.stable

Question

In Unity’s animation state machine, you can add an animation clip as a node, and use a script to directly control a parameter for the animation’s “Motion Time” - like seeking to a certain time in the animation, but without playing it. I used this feature to import animations for a controller overlay. When, for example, I tilted the right analog stick up on my physical controller, I could set the Motion Time parameter on my “RightStickYAxis” animation to tilt the 3D model of the stick, matching the input in real time.
When messing with Godot’s AnimationTree StateMachine and BlendTree nodes, I found a TimeSeek node, but using it to seek to a certain point in the animation causes the animation to play from that point. I would like it to be static, staying at that point in the animation. I would then blend that with an x-axis animation. One thing that I thought could work is the start_offset property on AnimationNodeAnimation, but that doesn’t seem to be exposed as a property you can edit in real time.
Am I approaching this the right way? Is there an analogue (pun intended) to the feature I used in the other game engine?

You could use a TimeSpeed node set to 0 in addition to the time seek.

I prefer to set up single-frame animation poses and blend between them, in a BlendSpace2D.

1 Like

Good idea with the time scale thing but I couldn’t get it to work. The single frame animation trick works great though! Thank you!