Quick answer: Build rotation via Make Rot from X with a direction vector. Don’t pass a default FRotator/FQuat into SetActorRotation.

Look-at logic computes a direction. Code passes a zero quaternion when direction is zero-length. Actor rotates to identity.

The Fix

BP path:
  ToTarget = Target.Location - Self.Location
  Length(ToTarget) > 1?
    True → Make Rot from X(ToTarget) → SetActorRotation
    False → (skip)

C++:
if (!Direction.IsNearlyZero()) {
    FRotator R = Direction.Rotation();
    SetActorRotation(R);
}

Guard against zero-length direction. Use Rotation() or MakeFromX; both produce sensible orientations from a non-zero vector.

Verifying

Set rotation per tick from velocity. Stationary actor with zero velocity keeps last rotation, doesn’t snap.

“Guard zero. Build from direction. Rotation lands.”

Related Issues

For BP Interface defaults, see BPI defaults. For replication scope, see replication.

From direction. Guard zero. Spin keeps.