Поворот объекта с камерой мышкой C# Unity3D

Я делаю поворот объекта с камерой передвижением мышки, как в шутерах. Моя камера находится в двух родительских элементах. Верхний по иерархии из них - Player имеет параметр RigidBody. Делая поворот объекта, я поворачиваю элемент RigidBody из Player.

-Player
---PlayerSkin
-----PlayerCamera

Код:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Moving : MonoBehaviour{

    // Preferences
    public GameObject PlayerCamera; // Camera
    public GameObject Player; // Object with Rigidbody
    // Player
    private Rigidbody rb;
    public float speed;
    // Mouse control
    private float MouseX;
    private float MouseY;
    public float mouseSpeed;

 

    void Start(){
        rb = Player.GetComponent<Rigidbody>();
        Cursor.lockState = CursorLockMode.Locked;
        speed = 3;
        mouseSpeed = 5;
    }

    void Update(){
        // Mouse Abort
        MouseX = Input.GetAxis("Mouse X") * mouseSpeed * Time.deltaTime;
        MouseY = -Input.GetAxis("Mouse Y") * mouseSpeed * Time.deltaTime;
        transform.rotation *= Quaternion.Euler(MouseY, MouseX, 0);






        // Move Forward
        if (Input.GetKey(KeyCode.W)){
            rb.transform.Translate(Vector3.forward * speed * Time.deltaTime);
        }

        // Move Back
        if (Input.GetKey(KeyCode.S)){
            rb.transform.Translate(Vector3.back * speed * Time.deltaTime);  
        }

        // Move Right
        if (Input.GetKey(KeyCode.D)){
            rb.transform.Translate(Vector3.right * speed * Time.deltaTime);
        }

        // Move Left
        if (Input.GetKey(KeyCode.A)){
            rb.transform.Translate(Vector3.left * speed * Time.deltaTime);
        }

    }
    
}

Поворот работает. Но если переменная mouseSpeed имеет значение больше 90, поворот становится резкий и нестабильный, а также если поворачивать камеру по Y то сам объект передвигается по X.

Почему так происходит, и есть ли способ избежать этого?


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