(Unreal 4.8.1) Как вы вычисляете x, y и z контроллера игрока при вращении вокруг точки на определенном расстоянии

У меня на интерфейсе 4 стрелки. Одна стрелка указывает в одном направлении: вверх, вниз, влево, вправо. Когда вы выбираете стрелку, я хочу, чтобы контроллер игрока вращался в этом направлении вокруг точки, глядя в эту точку. Я немного запутался в логике преобразований, векторов и ротаторов (шаг, рыскание, крен). Может ли кто-нибудь помочь мне с этой логической проблемой? Я работаю по схеме.


person Baby Coder    schedule 01.07.2015    source источник
comment
Пожалуйста, отредактируйте свой вопрос и добавьте фрагмент кода, который вы пытались использовать. Это очень помогло бы людям, ответившим на ваш вопрос! Узнайте больше о том, как задать хороший вопрос.   -  person methode    schedule 02.07.2015


Ответы (1)


Поскольку вы смешиваете преобразования некоммутативным способом, лучше повторять вычисление каждый раз, когда вам это нужно.

Требуется 5 этапов, расстояние и два ракурса. Картинка для уточнения:

введите здесь описание изображения

  1. Переместите своего игрока в +ve Z-направлении на расстояние, которое вы хотите, чтобы он был от точки
  2. Сделайте его обращенным к -ve Z-направлению (0, 0, -1)
  3. Поверните его вокруг оси x на θ (по часовой стрелке, если смотреть вниз по оси) — матрица P
  4. Поверните его вокруг оси z на ϕ (аналогично) - матрица Q
  5. Переведите его на смещение от начала координат к точке (т. е. точка, выраженная вектором ее положения) — матрица T

Матрицы, необходимые для P и Q: https://en.wikipedia.org/wiki/Rotation_matrix#Basic_rotations

Я предполагаю, что вы знаете матрицу перевода :)

Следите за каждым углом и меняйте их при нажатии клавиш со стрелками. Также нужна последняя матрица TPQ (умножьте в этом порядке); пересчитывайте его каждый раз, когда вам это нужно - не беспокойтесь о необходимой вычислительной мощности.

person Community    schedule 01.07.2015