Я вращаю трехмерный объект с камерой (как ребенок) и твердым телом с мышью и клавиатурой.Я использую следующую codenippet:
private void Update()
{
float rh = Input.GetAxisRaw("Mouse X");
float rv = Input.GetAxisRaw("Mouse Y");
float rx = Input.GetAxisRaw("Roll");
rotInput = new Vector3(rv, rh, rx);
Thrust(); //Move forward and backward
}
private void FixedUpdate()
{
Moving.MoveInput(rotInput);
}
Я могу перемещать 3D-объект (и камеру) с помощью мыши, но когда я смотрю влево или вправо, камера скользит по диагонали,Я хочу вращать мышью, как FPS, но с жестким телом (не с transform.euler ....).Кто-нибудь знает решение, чтобы камера двигалась точно по порядку с помощью мыши (без скольжения по диагонали)?
Я изменяю код на:
void moveWithMouse()
{
moveCamera(Input.GetAxis("Mouse X"), Input.GetAxis("Mouse Y"), arrowMouseSpeed);
}
void moveCamera(float horizontal, float verticle, float moveSpeed)
{
mouseX = horizontal;
mouseY = -verticle;
rotY += mouseX * moveSpeed;
rotX += -mouseY * moveSpeed;
roll += Input.GetAxis("Roll");
rotInput = new Vector3(rotY, rotX, roll);
Debug.Log("rotInput" + rotInput);
}
Но теперь он продолжает вращаться, и я не могу его остановить.Я до сих пор пользуюсь ридибоди.Есть ли решение, чтобы мышь работала правильно, и камера перестала вращаться, когда я перестал двигать мышь?