Allicost is there a way to manually blend animations from the AnimationPlayer without using an AnimationTree node
Yes
you NEED state machines
Allicost the more animations I need to work with.
if you use many animations you need AnimationTree
Allicost don't understand how I could dynamically create connections on runtime
AnimationMixer
and AnimationNodeStateMahchine
have methods for doing everything, Just read the docs.
https://docs.godotengine.org/en/stable/classes/class_animationmixer.html#class-animationmixer-method-add-animation-library
https://docs.godotengine.org/en/stable/classes/class_animationnodestatemachine.html#class-animationnodestatemachine-method-add-node
Allicost I might need since I plan on adding a system where I can load in external character assets that could have any number of animations.
that is another problem entirely. you should test whether it's possible to do it before working on setting up animations.
What you CAN do is have scenes with different characters, these would have their own animationtrees/animationplayers.
Allicost between the keys of the current animation and the next one calling some method
AnimationPlayer
can play an animation, set a next animation and change blending time, but you will essentially write your own version of state machine. I only recomend doing this if you know what you are doing and it's better than using an animationtree, because it can be a lot of code and lead to spaghetti code if you don't do it right.
and you don't need Tweens, animationplayer does the blending on it's own, the time is up to the animation lengths. but you do have to code state machines and transitions.
https://docs.godotengine.org/en/stable/classes/class_animationplayer.html#
Allicost I see the AnimationMixer class on the documentation which sounds like what I need but I don't really get how I could use it. I don't mind having to write an extra script to handle the tweening if it means saving me from the AnimationTree workflow on future projects.
all nodes in godot are inherited from other nodes. the children class has all the methods and properties of the parent class. in this case AnimationPlayer
inherits from AnimationMixer
. AnimationPlayer
can do anything AnimationMixer
can.
The inspector shows you these in the different "categories", like Node3D
which has the transforms or Node
which has the process mode.
For adding animations for characters, you can set them up as humanoid skeletons, then you do retargeting in godot.
your file becomes an animation_library and you import these to the animation_player. then your character can play any animation.
just like in other engines, you have to follow some rules with the number, position and naming of bones, but it works.
This way you can share animations between different characters.