Unity Поворот объекта за мышкой

Делаю игру от 1 лица и понадобился поворот камеры за мышкой (как в кс), но при этом у меня дёргается камера. Она поворачивается, но трясётся.

Мой код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Threading;
public class ddd : MonoBehaviour
{

    public float sensitivity = 1F;
    private Vector3 MousePos;
    private float MyAngle = 0F;
    private float MyAngle2 = 0F;
    int delay = 0;
    public float AddAngle = 0F;
    public float AddAngle2 = 0F;
    bool b = false;
    void Start()
    {
        
        
        Cursor.visible = false;
    }

    void Update()
    {
        MousePos = Input.mousePosition;

    }

    void FixedUpdate()
    {
        if (sensitivity != 0)
        {
            MyAngle = 1.3f * sensitivity * ((MousePos.y - (Screen.height / 2)) / Screen.height);
            MyAngle2 = 2 * sensitivity * ((MousePos.x - (Screen.width / 2)) / Screen.width);
            
            
            if (!b)
            {
                MyAngle2 = (MyAngle2 + AddAngle) % 360;
                MyAngle = (MyAngle + AddAngle2) % 360;
            }
            else
            {
                MyAngle2 = AddAngle;
                MyAngle = AddAngle2;
            }
            transform.eulerAngles = new Vector3(-MyAngle, MyAngle2, 0);
            
        
        }
        delay++;
        if(delay % 10 == 0)
        {
            Cursor.lockState = CursorLockMode.Locked;
            AddAngle = MyAngle2;
            AddAngle2 = MyAngle;
            b = true;
            
        }
        else
        {
            Cursor.lockState = CursorLockMode.None;
            b = false;
        }
        
        
    }
}

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

Автор решения: Mr.AntonDer
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using System.Threading;
public class ddd : MonoBehaviour
{

    public float sensitivity = 1F;
    private Vector3 MousePos;
    private float MyAngle = 0F;
    private float MyAngle2 = 0F;
    int delay = 0;
    public float AddAngle = 0F;
    public float AddAngle2 = 0F;
    bool b = false;
    void Start()
    {
        
        
        Cursor.visible = false;
    }

    void Update()
    {
        MousePos = Input.mousePosition;

    }

    void FixedUpdate()
    {
        if (sensitivity != 0)
        {
            MyAngle = 1.3f * sensitivity * ((MousePos.y - (Screen.height / 2)) / Screen.height) * Time.deltaTime;
            MyAngle2 = 2 * sensitivity * ((MousePos.x - (Screen.width / 2)) / Screen.width)* Time.deltaTime;
            
            
            if (!b)
            {
                MyAngle2 = (MyAngle2 + AddAngle) % 360;
                MyAngle = (MyAngle + AddAngle2) % 360;
            }
            else
            {
                MyAngle2 = AddAngle;
                MyAngle = AddAngle2;
            }
            transform.eulerAngles = new Vector3(-MyAngle, MyAngle2, 0);
            
        
        }
        delay++;
        if(delay % 10 == 0)
        {
            Cursor.lockState = CursorLockMode.Locked;
            AddAngle = MyAngle2;
            AddAngle2 = MyAngle;
            b = true;
            
        }
        else
        {
            Cursor.lockState = CursorLockMode.None;
            b = false;
        }
        
        
    }
}
→ Ссылка