Как сделать так, чтобы лицо персонажа было противоположным в Unity? - PullRequest
0 голосов
/ 29 апреля 2019

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

  1. Quaternion lookAt = Quaternion.Euler(-transform.rotation.eulerAngles);

  2. Quaternion lookAt = Quaternion.Inverse(transform.rotation.eulerAngles);

  3. gameObject.transform.Rotate(new Vector3(0,180,0)
  4. Quaternion lookAt = Quaternion.Euler(-transform.localEulerAngles)

Я думал, что это будет тривиально, но, видимо, нет. Я не знаю, использовать ли локальные или мировые координаты (я пробовал оба). В большинстве случаев, описанных выше, происходит то, что величина, которую поворачивает персонаж, зависит от направления его движения. transform.Rotate вообще не вращает моего персонажа. Я не знаю, почему это так сложно, и большинство решений, которые я нашел в Интернете, тоже не сильно помогли. Действительно ценю любые ваши идеи.

1 Ответ

1 голос
/ 29 апреля 2019

ок, наконец, нашел решение. Спасибо, Лойус (https://answers.unity.com/questions/446536/reverse-axis-of-quaternion.html)

Очевидно, вам нужно умножить кватернионы, чтобы получить точное вращение. Не знаю, почему другие ответы не упомянули об этом.

Я закончил тем, что lookQuaternion = transform.rotation*Quaternion.AngleAxis(180, Vector3.up); заставил персонажа смотреть в противоположную сторону по оси Y

...