TheTalion
@TheTalion

Какой формулой определить где находится персонаж — за другим персонажем, перед, справа-слева и тд.?

В общем, есть персонаж (vector3), точка куда смотрит персонаж(vector3). Угол обзора(int).

Так же есть точка - второй персонаж(vector3). Нужно определить, где находится второй персонаж - за спиной персонажа или перед лицом?

Подскажите куда копать, какие формулы и тд.
  • Вопрос задан
  • 284 просмотра
Решения вопроса 2
  • Griboks
    @Griboks
    Проверить угол между векторами и, если вторая точка попадает в угол обзора, расстояние между точками. Собственно, вот и всё, осталось только вспомнить школьные формулы. Переписывать их сюда я конечно же не буду)
    Ответ написан
  • @Mercury13
    Программист на «си с крестами» и не только
    Считаем, что у нас FPS, т.е. есть некая абсолютная «горизонталь». Обычно в таких играх взгляд хранится через углы (yaw, pitch, roll).
    Взад-вперёд: знак скалярного произведения двух векторов: единичного вектора взгляда без учёта тангажа (cos(yaw), sin(yaw)) и вектора на персонажа (x1−x0, y1−y0).
    Влево-вправо: знак косого произведения той же пары векторов.
    Вверх-вниз: и так понятно.
    Все три в одних единицах, и у кого модуль больше, то и пишем: сверху, справа и т.д. Возможно, придётся сделать скидку на рост персонажей и их диаметр.

    В играх типа Descent нет верха и низа, горизонтали и вертикали. Верх и низ есть только относительно кабины нашего аппарата, а взгляд хранится в виде ортонормированной матрицы, куска этой матрицы или кватерниона.
    1) Скалярное произведение единичного 3D-вектора взгляда (обычно в таких играх хранится напрямую или считается через кватернион поворота) и 3D-вектора на персонажа.
    2) Скалярное произведение единичного вектора, который смотрит вбок (если такой есть), и вектора на персонажа. Либо смешанное произведение единичного вектора взгляда, единичного вектора макушки и вектора на персонажа.
    3) Скалярное произведение единичного вектора макушки и вектора на персонажа.

    Смешанный случай — с переменным вектором гравитации (в глобальных авиасимуляторах или играх на астероидах) — распиши сам.
    Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы
PiRL Ventures Москва
от 100 000 до 140 000 руб.
LATOKEN Москва
от 150 000 до 250 000 руб.
15 июля 2018, в 15:03
18000 руб./за проект