sasalka/Code/Player/Dedugan.Camera.cs
2025-06-29 15:06:54 +03:00

31 lines
1.3 KiB
C#

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 );
var bodyYaw = Renderer.LocalRotation.Yaw();
var cameraYaw = EyeAngles.yaw;
var compensatedYaw = cameraYaw - bodyYaw;
CameraPivot.LocalRotation = Rotation.FromYaw( compensatedYaw ) * Rotation.FromPitch( EyeAngles.pitch );
}
}
}