В моей игре, когда я щелкаю мышью по местности где-то, я бы хотел, чтобы игрок выпустил стрелу в эту позицию параболическим способом.
Стрелка имеет положение, ускорение и скорость, используя трехмерные векторы. Я посмотрел « Траекторию» статьи о снаряде в Википедии, но я не знаю, как применить ее в моей ситуации, поскольку она объясняет 2D математику. Мне было интересно, есть ли решение для 3D векторов? Какие-нибудь хорошие ресурсы, возможно, связанные с 3D-ситуацией?
Ответы:
Чтобы расширить комментарий Килотана, Вы можете использовать 2D формулы в 3D. Предполагая, что Y поднялся:
рассчитать положение цели в пространстве X'Y'Z ', где ось X' параллельна направлению полета стрелки, ось Y 'направлена вверх, а Z' перпендикулярна осям X 'и Y'.
Как только вы вычислили X 'и Y', вы можете преобразовать обратно в реальное пространство XYZ
пример
Лучник в (1,0,1). Хочет стрелять в (4,0,5). Мы принимаем X 'за единичный вектор (0,6, 0, 0,8), так как он указывает прямо из источника в пункт назначения. Затем мы принимаем Z 'равным (-0,8, 0, 0,6), потому что оно перпендикулярно, но, поскольку стрелка не движется по оси Z', мы ее проигнорируем. Теперь ваша задача выяснить, как стрелять из (0,0) в (0,5) в пространстве X'Y '.
.. делать 2D расчеты здесь. Обратите внимание, что вам, вероятно, понадобятся параметрические функции X 'и Y' в терминах переменной времени t .
Один из способов абстрагировать преобразование между двумя координатами - использовать матрицу преобразования.
когда мы конвертируем обратно из X'Y'Z ' в XYZ , это просто обратное линейное преобразование.
источник