Итак, я пишу скрипт, который может вращать объект с помощью движений мыши.Сцена, которую я создал, представляет собой камеру с объектом перед ним.Перемещение мыши влево приводит к вращению объекта влево, перемещение мыши вверх приводит к вращению объекта и т. Д. Теперь у меня есть небольшая проблема.Когда я поворачиваю объект на 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);