У меня на интерфейсе 4 стрелки. Одна стрелка указывает в одном направлении: вверх, вниз, влево, вправо. Когда вы выбираете стрелку, я хочу, чтобы контроллер игрока вращался в этом направлении вокруг точки, глядя в эту точку. Я немного запутался в логике преобразований, векторов и ротаторов (шаг, рыскание, крен). Может ли кто-нибудь помочь мне с этой логической проблемой? Я работаю по схеме.
(Unreal 4.8.1) Как вы вычисляете x, y и z контроллера игрока при вращении вокруг точки на определенном расстоянии
comment
Пожалуйста, отредактируйте свой вопрос и добавьте фрагмент кода, который вы пытались использовать. Это очень помогло бы людям, ответившим на ваш вопрос! Узнайте больше о том, как задать хороший вопрос.
- person methode   schedule 02.07.2015
Ответы (1)
Поскольку вы смешиваете преобразования некоммутативным способом, лучше повторять вычисление каждый раз, когда вам это нужно.
Требуется 5 этапов, расстояние и два ракурса. Картинка для уточнения:
- Переместите своего игрока в +ve Z-направлении на расстояние, которое вы хотите, чтобы он был от точки
- Сделайте его обращенным к -ve Z-направлению (0, 0, -1)
- Поверните его вокруг оси x на θ (по часовой стрелке, если смотреть вниз по оси) — матрица P
- Поверните его вокруг оси z на ϕ (аналогично) - матрица Q
- Переведите его на смещение от начала координат к точке (т. е. точка, выраженная вектором ее положения) — матрица T
Матрицы, необходимые для P и Q: https://en.wikipedia.org/wiki/Rotation_matrix#Basic_rotations
Я предполагаю, что вы знаете матрицу перевода :)
Следите за каждым углом и меняйте их при нажатии клавиш со стрелками. Также нужна последняя матрица TPQ (умножьте в этом порядке); пересчитывайте его каждый раз, когда вам это нужно - не беспокойтесь о необходимой вычислительной мощности.
person
Community
schedule
01.07.2015