Description

The character movement component in 

void UCharacterMovementComponent::SimulateMovement(float DeltaSeconds)

evaluates whether to find the floor when simulating the movement of the simulated proxy based on whether the gravity relative velocity's z  component is not positive:

bShouldFindFloor = RotateWorldToGravity(Velocity).Z <= 0.0;

Due to quantization of the replicated movement's linear velocity and floating point error in the world to gravity transform, it's possible that this check will return false in instances where the character is grounded and not moving along the gravity direction.

Steps to Reproduce

In a local PIE session walk around on a surface using custom gravity with at least two clients. Observe that

bShouldFindFloor = RotateWorldToGravity(Velocity).Z <= 0.0;

sometimes fails for the simulated proxy when moving along the face of the surface.

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-209298 in the post.

0
Login to Vote

Fixed
ComponentUE - Gameplay - Components
Affects Versions5.3
Target Fix5.5
Fix Commit32182236
Main Commit32182236
CreatedMar 8, 2024
ResolvedMar 12, 2024
UpdatedMar 13, 2024