Godot Version
v4.2.1.stable.mono.official [b09f793f5]
Question
I’m creating AnimationNodeStateMachineTransitions at runtime with this function:
public AnimationNodeStateMachineTransition TransitionTo(string targetAnim, float XFade, bool doTransition)
{
string currAnim = stateMachine.GetCurrentNode();
if (animationStateMachine.HasTransition(currAnim, targetAnim))
{
if (doTransition) stateMachine.Travel(targetAnim);
GD.Print("Has transition");
return null;
}
else
{
AnimationNodeStateMachineTransition transition = new AnimationNodeStateMachineTransition();
transition.XfadeTime = XFade;
transition.SwitchMode = AnimationNodeStateMachineTransition.SwitchModeEnum.Sync;
transition.AdvanceMode = AnimationNodeStateMachineTransition.AdvanceModeEnum.Enabled;
GD.Print("transition made");
if (doTransition) stateMachine.Travel(targetAnim);
return transition;
}
}
This works, however the transition is always instantaneus, even if I pass an XFadeTime higher than 0. What is the problem with my code?