我正在和一些朋友用 Java 构建一个小型塔防游戏。现在我被分配了塔的逻辑,目前我正试图弄清楚塔必须如何转向瞄准并击中目标怪物。因为怪物在塔转动和射击时继续前进,它需要瞄准未来的位置。我已经实现了一个函数,它给了我一个怪物在任何时间 t 的位置,还有一个函数,它给了我转向怪物所需的更小的角度,但现在我很困惑,因为有三个未知变量:
- t1 or angle:塔需要转动的时间或角度(给定塔可以转动的速度)
- t2 或射击距离:子弹击中目标所需的时间(速度也给定,恒定)。
- t3 或移动距离:怪物在同一时间内移动的距离。
所以我正在寻找解决方案:
min(t1+t2) = min(t3)
目标怪物仍在塔的范围内。我已经考虑过用最大需要转弯和最大可能范围进行计算,然后逐步递减,但我很好奇是否有“完美”的非启发式解决方案?