FPS тряска при одновременном повороте камеры и передвижении игрока,хотя вроде все правильно. Помогите,пожалуйста

using UnityEditor.Embree;
using UnityEngine;
using UnityTutorial.Manager;

namespace UnityTutorial.PlayerControler
{
    public class PlayerControler : MonoBehaviour

    {
        [SerializeField] private float AnimBlamdSpeed = 8.9f;

        [SerializeField] private Transform CameraRoot;
        [SerializeField] private Transform Camera;

        [SerializeField] private float UpperLimit = -40f;
        [SerializeField] private float BottomLimit = 70f;

        [SerializeField] private float MouseSensitivity = 21.9f;


        private Rigidbody _playerRigidbody;
        private InputManager _inputManager;

        private Animator _animatior;
        private bool _hasAnimator;

        private int _xVelHesh;
        private int _yVelHesh;

        private float _xRotataion;

        private const float _walkSpeed = 2f;
        private const float _runSpeed = 6f;

        private Vector2 _currentVelocity;

        void Start()
        {
            _hasAnimator = TryGetComponent<Animator>(out _animatior);
            _playerRigidbody = GetComponent<Rigidbody>();
            _inputManager = GetComponent<InputManager>();

            _xVelHesh = Animator.StringToHash("X_Velocity");
            _yVelHesh = Animator.StringToHash("Y_Velocity");


        }

        private void FixedUpdate()
        {
            Move();
        }

        private void LateUpdate()
        {
            CamMovements();
        }

        private void Move()
        {

            if (!_hasAnimator) return;

            float targetSpeed = _inputManager.Run ? _runSpeed : _walkSpeed;
            if (_inputManager.Move == Vector2.zero) targetSpeed = 0.1f;


            _currentVelocity.x = Mathf.Lerp(_currentVelocity.x, _inputManager.Move.x * targetSpeed, AnimBlamdSpeed * Time.fixedDeltaTime);
            _currentVelocity.y = Mathf.Lerp(_currentVelocity.y, _inputManager.Move.y * targetSpeed, AnimBlamdSpeed * Time.fixedDeltaTime);

            var xVelDifference = _currentVelocity.x - _playerRigidbody.linearVelocity.x;
            var yVelDifference = _currentVelocity.y - _playerRigidbody.linearVelocity.y;

            _playerRigidbody.AddForce(transform.TransformVector(new Vector3(xVelDifference, 0, yVelDifference)), ForceMode.VelocityChange);

            _animatior.SetFloat(_xVelHesh, _currentVelocity.x);
            _animatior.SetFloat(_yVelHesh, _currentVelocity.y);

        }

        private void CamMovements()
        {
            if (!_hasAnimator) return;

            var Mouse_X = _inputManager.Look.x;
            var Mouse_Y = _inputManager.Look.y;
            Camera.position = CameraRoot.position;

            _xRotataion -= Mouse_Y * MouseSensitivity * Time.deltaTime;
            _xRotataion = Mathf.Clamp(_xRotataion,UpperLimit,BottomLimit);

            Camera.localRotation = Quaternion.Euler(_xRotataion,0,0);
            transform.Rotate(Vector3.up, Mouse_X * MouseSensitivity * Time.deltaTime);
        }
    }
}

Ответы (0 шт):