Я создаю небольшую игру в жанре Tower Defense с друзьями на Java. Сейчас мне назначена логика для башен, и в данный момент я пытаюсь понять, как башня должна повернуться, чтобы прицелиться и поразить целевого монстра. Поскольку монстр движется дальше, пока башня поворачивается и стреляет, ему нужно целиться в будущую позицию. Я реализовал функцию, которая дает мне положение монстра в любой момент времени t, а также функцию, которая дает мне меньший угол, необходимый для поворота к монстру, но теперь я запутался, потому что есть три неизвестные переменные:
- t1 или угол: время или угол, на который башня должна повернуться (задается скорость, с которой может повернуться башня)
- t2 или дистанция выстрела: время, необходимое пуле, чтобы попасть в цель (скорость также задана, постоянная).
- t3 или расстояние перемещения: расстояние, которое монстр проходит за то же время.
Итак, я ищу решение для:
min(t1+t2) = min(t3)
где целевой монстр все еще находится в пределах досягаемости башни. Я уже думал о расчете с максимально необходимым поворотом и максимально возможной дальностью, а затем с пошаговым уменьшением, но мне любопытно, есть ли «идеальное» неэвристическое решение?