Unity - преобразование Quaternion в Vector3 - PullRequest
0 голосов
/ 12 июля 2020

Я видел довольно много подобных вопросов, и проблема в том, что вопрос не имеет смысла. Это не одно и то же, это немного похоже на высказывание «как превратить яблоко в кирпич»?

Но обычно основной вопрос имеет смысл, это формулировка вызывает подозрение.

Я хочу сделать следующее:

  • У меня есть объект в системе координат мирового пространства с вращением, представленным Quaternion R.
  • , если этот объект должны были двигаться вперед относительно своей локальной системы отсчета, ie прямо вдоль своей локальной оси Z, на номинальную величину ...
  • ... что бы было за Vector3, чьи (нормализованные) компоненты представляют это движение в мировой системе отсчета?

Теперь, я думаю , ответ:

    Vector3 ans = R * Vector3.forward;

Это правильно, и если да, то почему? (Если не прав, то каков ответ?)

1 Ответ

2 голосов
/ 12 июля 2020

Да, это правильно.

Quaternion * Vector3 принимает заданный вектор и вращает его в соответствии с заданным вращением.

Итак, если ваш R в основном мир-пространство transform.rotation объекта, то результатом будет локальный прямой (положительный Z) вектор объекта как вектор в координатах мирового пространства.

Вы также можете напрямую использовать вектор объекта transform.forward, который в основном равен transform.rotation * Vector3.forward

...