This seems to happen due to a precision error when calculating the relative transform between the socket and the component being attached. Occasionally, one of the transforms will have a scale of (0.999..., 0.999..., 0.999...) rather than (1,1,1), which results in the component's RelativeScale3D being set to a value very close to (1,1,1) in USceneComponent::AttachToComponent. Because the relative scale will be replicated with this new value along with the attachment info, bNetUpdateTransform will be true in USceneComponent::PostRepNotifies, causing it to skip zeroing the component's relative location on the client when attaching it.
Expected: the actor will be attached at the socket's location/rotation on both the client and server.
Actual: on the client, the attached actor may be at a large offset to the socket's location.
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-172512 in the post.
3 |
Component | UE - Gameplay - Components |
---|---|
Affects Versions | 5.1 |
Target Fix | 5.6 |
Created | Dec 9, 2022 |
---|---|
Updated | Oct 1, 2024 |