Поворот объекта с камерой мышкой 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.
Почему так происходит, и есть ли способ избежать этого?