ivate void CamMovements()
{
Vector2 lookInput = _inputManager.Look;
if (lookInput.sqrMagnitude < 0.001f) return;
float mouseX = lookInput.x * MouseSensitivity * Time.smoothDeltaTime;
float mouseY = lookInput.y * MouseSensitivity * Time.smoothDeltaTime;
// Rotate player (or CameraRoot) around Y (yaw)
Quaternion yawRotation = Quaternion.Euler(0f, mouseX, 0f);
_playerRigidbody.MoveRotation(_playerRigidbody.rotation * yawRotation);
// Accumulate pitch and clamp it
_xRotation -= mouseY;
_xRotation = Mathf.Clamp(_xRotation, UpperLimit, BottomLimit);
// Apply pitch to Camera local rotation
Camera.localRotation = Quaternion.Euler(_xRotation, 0f, 0f);
// Ensure CameraRoot position follows player (if needed)
Vector3 targetPosition = _playerRigidbody.position;
CameraRoot.position = Vector3.Slerp(CameraRoot.position, targetPosition, Time.deltaTime * 20f);