I have a case where I’m selecting which individual animation sequence to use from an array of animation sequences.
Currently, I do this my having an Animation Sequence variable in the Animation Blueprint and setting it from the Event Graph. However, within a state machine’s state, there is no way to create an Animation Sequence Player without selecting an existing Animation Sequence. I’ve worked around this by using the node’s settings to expose the Sequence property as a pin and feeding my Animation Sequence variable in to the pin. (This seems to work, but it’s awkward.)
Is there no way to create a generic sequence player? The only options seem to be to create a sequence player with a preset animation sequence based on those that are valid for the skeleton. Such nodes can not be renamed and do not rename themselves automatically.
Not being able to rename the sequence leads to additionally unintuitive and confusing behavior like a state transition accessing the remaining time on the animation sequence player, but referring only to the sequence name and specifically as though it’s referring to the asset and not the sequence player node in the state.
On top of all, it seems like if the animation you used as a base and the one stored in your variable have different lengths, the “time remaining” evaluation will only take the base animation as a reference (in your case, it would use “antLion_attack1” instead of “SelectedAttackAnimSequence”)
You can see how this can be a problem if those 2 animations have drastically different lengths
This would be very helpful to fix. In my situation, I want to programatically change the play rate of the sequence. I thought one way would be to have the animsequence specified in c++, so I can get at its original length and I could calculate a play rate from that. Then I’d feed that animsequence to a sequence player like you’re proposing. But it looks like this isn’t possible. And since this post is from 8/24/2014 and still unanswered, I guess it’s not going to be possible.
The way i got around this was to have a timer defined in c++ which starts when we enter the state and sets a toggle to exit the state once it completes.
You can get the time of the animation sequence by using the function :
animsequence->GetMaxCurrentTime();
It definitely would help if the sequence player handles it on its own.
Following your suggestion, i decided to entirely manage the animations in the code, which allowed me to get rid of all the animations BP and gain greater freedom.
Who at Epic is in charge for the animation system?
I need to build a composite player in C++ without any blueprints.
That is, to play the composite like an AnimationSingleNode.
It currently only plays the first segment on the track.