34 lines
1.5 KiB
C#
34 lines
1.5 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 );
|
|
|
|
// Компенсируем поворот тела, чтобы камера вращалась правильно
|
|
// Используем только 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 );
|
|
}
|
|
}
|
|
}
|