Есть ли способ повернуть игровой объект, используя Quaternion.LookRotation () только по оси Y? - PullRequest
0 голосов
/ 15 апреля 2020

Итак, я работаю над проектом Unity. У меня есть миномет, который склонен к игроку игрового объекта. Я хочу повернуть его так, чтобы он следовал за движением игрока. Я предложил этот простой код в своем методе обновления:

        Vector3 directionToFace = _player.position - transform.position;
        directionToFace.y = 0;
        Debug.DrawRay(transform.position, directionToFace, Color.green); // for visualization
        transform.rotation = Quaternion.LookRotation(directionToFace);

Но, установив y на 0, поверните ось x на 0, но я хочу, чтобы мой раствор немного наклонился вперед. Я попытался установить y для множества различных значений, но затем расстояние между двумя объектами определяет степень отклонения раствора. Да, я знаю, что могу сделать его дочерним по отношению к пустому игровому объекту и применить скрипт к родителю, но если есть какой-либо другой способ исправить эту проблему в моем коде ... Ваша помощь будет оценена.

Единственная идея, которую я имею, - это рассчитать расстояние между двумя игровыми объектами и соответственно изменить значение directionToFace.y. Но мне нужно будет получить локальное вращение, назначенное для раствора в инспекторе, а затем вычислить значение с помощью теоремы Пифагора ... но я не хочу мучить себя так сильно: D

1 Ответ

0 голосов
/ 15 апреля 2020

Надеюсь, я понимаю вашу проблему! Я обнаружил, что можно наклонить ваш gameObject вперед, добавив в эту строку после кода

transform.rotation = Quaternion.Euler(xOffset,transform.rotation.eulerAngles.y, transform.rotation.eulerAngles.z);

, где xOffset - это величина, на которую вы хотите, чтобы ваш игровой объект наклонился, также можно было бы добавить явное значение для z аналогичным образом.

rotated object

Дайте мне знать, если это не то, что вы имели в виду.

...