using Sandbox.Citizen; public sealed partial class Dedugan { private void RotateCamera() { if ( RagdollController.Enabled ) { var off = RagdollController.WorldRotation.Up * 20f - Camera.WorldRotation.Forward * 200f; // Camera.WorldPosition = Vector3.Lerp( Camera.WorldPosition, RagdollController.WorldPosition + off, // Time.Delta * 5f ); // Camera.LocalRotation = Rotation.Lerp( Camera.LocalRotation, EyeAngles.ToRotation(), Time.Delta * 2f ); CameraPivot.WorldPosition = RagdollController.WorldPosition + off; // Vector3.Lerp( CameraPivot.WorldPosition, RagdollController.WorldPosition + off, Time.Delta * 25f ); CameraPivot.LocalRotation = EyeAngles.ToRotation(); //Rotation.Lerp( CameraPivot.LocalRotation, EyeAngles.ToRotation(), Time.Delta * 25f ); } else { // Плавная интерполяция позиции пивота для устранения колебаний CameraPivot.WorldPosition = Vector3.Lerp( CameraPivot.WorldPosition, Eyes.WorldPosition, Time.Delta * 25f ); // Компенсируем поворот тела, чтобы камера вращалась правильно // Используем только yaw от EyeAngles, но pitch оставляем как есть var bodyYaw = Renderer.LocalRotation.Yaw(); var cameraYaw = EyeAngles.yaw; var compensatedYaw = cameraYaw - bodyYaw; CameraPivot.LocalRotation = Rotation.FromYaw( compensatedYaw ) * Rotation.FromPitch( EyeAngles.pitch ); } } }