edit: The issue is seemingly fixed in Ue4.27.
Hi,
I don’t have a concrete solution for you, but I hope I can provide enough context to justify this as an answer.
Reproducing the issue
First of all, I can confirm that this is an issue, and that it is only happening in UE4.26. The problem is completely absent in UE4.25. I believe this is caused by the architectural refactor of the LevelSequencer in 4.26.
The symptoms are as you described: Every time SetPlaybackPosition
is called, the transform values of the actor are divided by two. You can test this with a setup like so:
Pressing v
many times to “undo” the level-sequence will cause the sequence to be shrunk to 1/2, then 1/4, then 1/8, until it hardly moves at all when played.
My resolution:
From my testing, the issue was directly caused by destroying/recreating the SequencePlayer. When I adjusted my test-case to create a single SequencePlayer on BeginPlay, and then use it with Play
/SetPlaybackPosition
, I no longer had this issue.
I know this doesn’t fully match your test-case, but potentially it gives you a hint about how to safely use SetPlaybackPosition?
Guesses at the cause:
From the article linked above:
In the new framework, a transform entity will be created when this track is resolved against its object along with pointers to the composite float channels; floats for the evaluated result of each channel; a function pointer to “USceneComponent::SetRelativeTransform”; and a tag signifying the entity is a transform property.
I think that this transform entity
may be the cause of the squishing? At least when destroying the player, I can accept that some important context or data is lost, that causes subsequent players to be wrong.
The unfortunate thing is all legacy methods were deprecetated, and rewritten to call SetplaybackPosition, so there is no other way to scrub.
Best of luck!