The animation gets "corrupted" when the Initial Position value has an invaildad value. In this case, this means that the Initial Position value is outside the range of the duration of the Animation. For example, if we have an animation that has a duration of 1 sec, if we set a value of 1.5sec, the animation will stop refreshing in editor, and in gameplay/runtime.
The value will be changed and reflected correctly in the Property widget, but the AnimationData structure that handles the AnimationInstance, will have still the max clamped value.
There most be an issue with how the entered data is propagated and filled to the FPropertyChangedEvent struct, and later sended to the AnimationInstance. AnimationData.InitialPosition is wrong when it reaches USkeletalMeshComponent::PostEditChangeProperties, but correct in FPropertyValueImpl::ImportText.
1- Create a Blueprint that inherits from Character.
2- Go to the Mesh and add SKM_Manny.
3- Set AnimationMode to Use Animation Asset.
4- Set AnimToPlay to MM_Jump (Can by any animation)
5- Disable animation looping
6- Set the InitialPosition out of range, in this case 2 sec (MM_Jump has a duration of 0.87 sec)
7- Change the value now to a valid position, example 0.2. You will see that the Property Widget will update correctly, but the Animation will not refresh. This error happens in editor and in the level.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-209980 in the post.
2 |
Component | UE - Anim - Runtime |
---|---|
Affects Versions | 5.3 |
Target Fix | 5.6 |
Created | Mar 18, 2024 |
---|---|
Updated | Jun 27, 2024 |