Я занимаюсь разработкой 2D-игры для Android и делаю алгоритм прицеливания для ИИ-снарядов, чтобы поражать врагов либо по пути, либо по свободному движению. В данный момент он просто вычисляет, где будет цель после дистанции, и стреляет снарядом, чтобы встретить ее на этом расстоянии. Конечно, это означает изменение скорости снаряда для достижения цели.
Есть ли у кого-нибудь подсказки для простого алгоритма (оптимального), чтобы рассчитать, когда снаряду нужно стрелять и куда нужно стремиться, если он может двигаться только с постоянной скоростью? Скажите, что снаряд идет вдвое быстрее цели?
Единственный способ, которым я могу придумать, - это поиск, и он кажется довольно большим.
Ответы:
В игре «Защита башни», которую я сделал, я использовал квадратное уравнение, чтобы предсказать пересечение и, таким образом, точку прицеливания. Следующий фрагмент кода прицеливания предполагает, что противник движется с постоянной скоростью и направлением. Также предполагается, что снаряд будет двигаться с известной постоянной скоростью (это могут быть любые скорости, но они должны быть известны алгоритму).
Так как он также определяет время удара, я просто ждал, пока не истечет время, чтобы вызвать графику удара в положении цели в это время ... нет необходимости в обнаружении столкновений для определения попаданий.
источник
a
такое 0? Это приведет к делению на нулевое исключение, но что это означает в терминах переменной t? следует ли считать это «очень большим числом» или каков будет лучший случай?ИИ, местоположение цели во время выстрела и возможное местоположение цели в точке смерти образуют треугольник. Вот то, что вы уже должны знать:
У вас есть три части треугольника, дело SSA, так что решите это так
Угол А должен позволить вам определить угол, под которым должен быть запущен снаряд.
источник