Объект Unity не вращается вокруг правильной оси - PullRequest
0 голосов
/ 25 апреля 2018

Итак, я пишу скрипт, который может вращать объект с помощью движений мыши.Сцена, которую я создал, представляет собой камеру с объектом перед ним.Перемещение мыши влево приводит к вращению объекта влево, перемещение мыши вверх приводит к вращению объекта и т. Д. Теперь у меня есть небольшая проблема.Когда я поворачиваю объект на 90 градусов влево или вправо, а затем поворачиваю его вверх или вниз, он вращается вокруг оси Z вместо оси X, как я хочу.Это происходит потому, что оси Z и X вращаются с осью Y, которой я манипулировал ранее, вращая ее влево или вправо.

Я сделал два гифки, демонстрируя проблему:

Вот код, который я сейчас использую:

public float object_rotSens = 100.0f;
float object_rotY = 0.0f;
float object_rotX = 0.0f;    

void Update()
{
object_rotX += Input.GetAxis("Mouse X") * object_rotSens * Time.deltaTime;
object_rotY += Input.GetAxis("Mouse Y") * object_rotSens * Time.deltaTime;
objectImRotating.transform.localEulerAngles = new Vector3(object_rotY, -object_rotX, 0);
}

Я надеюсь, что кто-то может помочь мне изменить код, чтобы у меня было предпочтительное вращение, даже если объект вращается на любую величину вокруг оси Y.Заранее спасибо!

Обновление:

Крис Х помог мне решить проблему.Для тех, у кого такая же проблема, вот что помогло мне решить проблему:

object_rotX = Input.GetAxis("Mouse X") * object_rotSens * Time.deltaTime;
object_rotY = Input.GetAxis("Mouse Y") * object_rotSens * Time.deltaTime;
objectImRotating.transform.RotateAround(objectImRotating.transform.position, new Vector3(object_rotY, -object_rotX, 0), 100 * Time.deltaTime);

1 Ответ

0 голосов
/ 25 апреля 2018

Попробуйте использовать Transform.RotateAround вместо localEulerAngles.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...