private void HandleIdleBodyRot()
{
BodyYaw = RB.rotation.eulerAngles.y;
CamYaw = CamHolder.eulerAngles.y;
YawDrift = Mathf.DeltaAngle(BodyYaw, CamYaw);
float ABSDrift = Mathf.Abs(YawDrift);
if (!IsBodyTurning && ABSDrift > TurnThreshold)
{
IsBodyTurning = true;
Debug.DrawRay(Player.position, CamHolder.forward, Color.red, 10, false);
}
if (IsBodyTurning)
{
// track camera while turning (kills the hard-stop jitter)
TargetBodyYaw = CamYaw;
TurnSpeed = Mathf.Lerp(MinTurnSpeed, MaxTurnSpeed, ABSDrift / PanicAngle);
float newYaw = Mathf.MoveTowardsAngle(BodyYaw, TargetBodyYaw, TurnSpeed * Time.fixedDeltaTime);
Debug.DrawRay(Player.position, Quaternion.Euler(0f, newYaw, 0f) * Vector3.forward, Color.blue, 10, false);
RB.MoveRotation(Quaternion.Euler(0f, newYaw, 0f));
// stop only when drift is actually small
if (ABSDrift < StopThreshold) IsBodyTurning = false;
}
}
How do i fix this jitter