Нацеливание на транспортное средство с известной постоянной скоростью является простым, и столкновение гарантировано (см. Прогнозирование позиции противника, чтобы объект шел впереди своей цели , Найти точку встречи из 2 объектов в 2D, зная (постоянную) скорость и наклон ). Неточный ИИ можно смоделировать, добавив небольшой коэффициент ошибок.
Но как можно нацелиться на транспортное средство, движения которого более сложны? Возможно, он уклоняется от ИИ или другого игрового объекта.
Я думал о том, как сделать это самому в FPS (в котором пули имеют конечную скорость) и думаю, что может потребоваться хотя бы пара режимов прицеливания, основанных на движении цели в предыдущую секунду или около того:
- Если это близко к линейной (пиковое ускорение в определенном диапазоне) цель с линейной моделью
- Если это очень нерегулярно (возможно, можно использовать размер ограничивающей рамки недавних позиций?), Нацеливайтесь на среднее значение
На данный момент я могу предположить 2-мерное пространство, ИИ неподвижен, а снаряд неуправляем и движется линейно.
Ответы:
Случайные мысли (без кода) ...
В реальной жизни человек стремится к транспортному средству со сложным движением, пытаясь выяснить, что это за движение, чтобы предвидеть его. Если вы пишете код для ИИ для целевого ИИ, то вы должны создать целевой ИИ, который получен из целевого ИИ. Например, если ваша цель будет бежать за укрытием, если она рядом, искусственный интеллект должен быть в состоянии предвидеть это движение.
С другой стороны, если вы пытаетесь нацелить людей с помощью ИИ, это будет намного сложнее. Случайный таргетинг может работать, но может выглядеть просто «случайным», что может или не может быть проблемой для вашей игры.
Чтобы придумать решение, одну вещь, которую вы можете сделать, это мысленно разделить проблему на разные части попытки что-то выстрелить ...
Возможность отслеживания
Чтобы поразить цель целевым устройством, которое может двигаться, нужно иметь возможность отслеживать и перемещать устройство, чтобы следовать за целью. Нацеливающий наблюдает за движением цели и перемещает цель, чтобы следовать. Если у трекера ограниченное количество движения, то его способность к отслеживанию будет затруднена, и ему может быть трудно отслеживать некоторые вещи. но если трекер обладает большой свободой слежения, он потенциально может отслеживать многие вещи. Подумайте о разнице между танковой башней и пальцем, указывающей на что-то.
Скорость слежения
Еще одним фактором является то, как быстро трекер может отслеживать. Если он очень медленный (например, «танковая башня»), то он не может отследить быстро движущуюся цель. Вместо этого он должен полагаться на ожидание пути цели. С другой стороны, трекер с «быстрой» скоростью может быстро перемещаться в новое местоположение цели.
Время реакции отслеживания
Третий фактор отслеживания - это время реакции отслеживания. То есть, когда цель меняет направление, как быстро может реагировать трекер? Конечный трекер с высокой скоростью отслеживания и мгновенным временем реакции - он может отслеживать любые изменения.
Признание цели
Насколько хорошо целевой может распознать цель? Если кто-то отслеживает цель в сложной среде, могут быть случаи, когда цель не может распознать или «потеряет» цель. Чем быстрее цель может распознать цель, тем лучше она будет. Чем меньше вероятность потерять цель, тем лучше.
Время реакции стрельбы
Тот факт, что цель на короткое время появляется в перекрестии, не означает, что выстрел произойдет. Может ли трекер реагировать достаточно быстро, чтобы нажать на курок? Действительно плохие трекеры с очень плохим временем реакции ничего не получат. Действительно хорошие трекеры с действительно хорошим временем реакции будут поражать все, потому что им нужно лишь малейшее время на цели.
Предвидя движение
Ожидание движения является еще одним фактором. В этом разница между попыткой отследить, где находится цель, и отслеживанием того, где, как вы думаете, будет цель. Если трекер может предвидеть, он может лучше отследить цель и получить больше шансов на то, что цель попадет в перекрестие, и, таким образом, улучшит свою способность выстрелить в зависимости от времени реакции. Трекер с нулевым ожиданием будет просто автоматически перемещать цель к цели, независимо от действий цели. Наихудший случай - трекер, скорость которого медленная, без ожидания, пытающаяся отследить простую движущуюся цель. Представьте себе цель, которая шагает влево, а затем вправо каждые несколько секунд. Медленный трекер будет просто отражать цель вперед-назад, но никогда не будет достаточно быстрым, чтобы получить цель.
Моделирование движения цели
Как уже упоминалось выше, трекер может предвидеть цель, моделируя ее движение, что не обязательно так сложно сделать. Если транспортное средство движется с некоторой скоростью, существует определенное количество мест, где транспортное средство может находиться в следующую секунду, и они расположены по существу как треугольник перед их движением. Чем быстрее они движутся, тем плотнее треугольник. Чем быстрее они могут повернуть, тем шире. Действительно быстрое транспортное средство, которое едва может повернуть (как ракета), имеет очень маленький узкий потенциальный путь. Медленный, который может очень хорошо крутиться, имеет гораздо более широкий потенциальный путь. Это похоже на те резервные камеры на некоторых автомобилях, которые перекрывают линии, показывающие вам, куда будет двигаться ваш автомобиль, если вы продолжите движение, как сейчас, а также куда вы могли бы пойти, если бы вам пришлось больше поворачивать колесо.
Итак, помня об этом, вы должны поместить поле «потенциальное целевое пространство» в это потенциальное пространство пути. Если вы знаете, что ваша цель имеет тенденцию поворачиваться из стороны в сторону, ваша коробка цели должна быть достаточно широкой, чтобы охватить все возможные движения. Если ваша цель довольно прямолинейна в своем движении, вы можете сделать вашу целевую рамку намного меньше и центрироваться в ожидаемом месте движения. Я думаю, что такое мышление поможет вам сделать единственное решение для отслеживания, которое на самом деле не делает различий между линейным и нелинейным ожиданием. Линейное отслеживание - это просто ожидание с более высоким уровнем достоверности (меньший блок таргетинга), тогда как случайное отслеживание - это отслеживание с низким уровнем достоверности (больший блок отслеживания)
Конечно, это становится сложной задачей, если цель стоит на месте, потому что она может двигаться в любом направлении. Но, конечно, если он сидит слишком долго, это легкая цель даже для самого медленного трекера.
Целевая Психология
Подумайте, что бы вы сделали, если бы внезапно выстрелили слева от вас. Ты бы на них побежал? НЕТ! Ты бы бежал направо. Или, может быть, вы побежите в укрытие. Но тогда, возможно, прицельщик специально стреляет в локацию укрытия, чтобы вы не побежали к ней.
Способность учиться
Потенциально ваш целевой может учиться на опыте. Предположим сначала, что они понятия не имеют о потенциальном движении транспортного средства. Они не знают, как быстро он может двигаться или как быстро он может вращаться. Наблюдение за этим в действии научит их, что это такое. Это означает, что в первый раз, когда они пытаются отследить, они могут не очень хорошо. Но они изучают поведение движения и делают лучше при последующих попытках.
Дальнейшее чтение
Немного погуглив после написания этого руководства, я познакомился с этим руководством по стрельбе из винтовки ...
http://www.globalsecurity.org/military/library/policy/army/fm/3-22-9/c07.htm
Там могут быть некоторые идеи о том, как настоящий человек должен / должен / мог бы целиться и отслеживать.
источник