I use a Anim Squence variable to store the anim I want to play and get its play length in the Event Graph. In the anim state machine I set the play rate of this anim to its play length so the anim should be played in one second no matter its original length , and set the anim to loop.
When the key triggers this anim is pressed I set a bool to true and start a timer which will set the bool to fasle after one second. In the anim blueprint I check the bool to start and stop the anim.
The problem is after the anim is played one time the character will do a little more anim , that means the anim is trying to loop.The conclusion is the anim is played a little faster than it should be.
“Play Rate” means the speed to play the animation. So when you set play rate to 2, it will play 2 times faster and 0.5 is half as fast. I don’t exactly know if there’s just a misunderstanding on what that means or if you are having another issue.
If you need to play only part of an animation on a loop, I’d recommend duplicating the animation, then removing the unwanted frames.
Hi Matt Williams：
Thank you for your reply and sorry for not replying you for so long.
I undstand the play rate,and I think you will agree with me that if the play rate is set to the anim’s length(in seconds) then the anim will be played in 1 second.
But in my test project,the character played several more frames after 1 second.I uploaded the test project to github:
GitHub - Branhub/PlayRateTest
Oh,and the effect I want is to play the whole anim in a certain time,1 second in the case of the test project I uploaded.I understand the issue in the test project can be simplely solved by uncheck loop in the play anim node.But if my opinion is right,it dosen’t matter if the loop is checked or not.
I’ve talked with one of our engineers and this appears to be expected. With all of the calculations going on to keep the animations playing at a consistent speed independent of the frame rate, rounding errors are expected.
Hey Matt W.
I guessed so.Thank you for your effort