java - 使用寻路时找到最接近目的地的物体

标签 java game-physics path-finding

我希望获得有关 2D java 游戏伪代码的帮助,

enter image description here

怪物(橙色球)通过路径坐标(点)沿着黑线运行:

    if(i.monsterx < i.chasePoint.getX()){
        i.monsterx++;
    }else if(i.monstery < i.chasePoint.getY()){
        i.monstery++;
    }else if(i.monsterx > i.chasePoint.getX()){
        i.monsterx--;
    }else if(i.monstery > i.chasePoint.getY()){
        i.monstery--;
    }

每次怪物到达“chasePoint”时,它都会获得一个新的chasePoint,等等......

黑色方 block 应该看起来像是在射击怪物,绿色圆圈是射击场。 但我如何决定子弹的去向呢?我更喜欢黑色方 block 在前面射击生物,但由于生物可能会减慢/眩晕,因此没有特定的顺序,我如何知道哪个生物在前面最长?

最佳答案

最简单的解决方案是让每个怪物跟踪其行进的距离(而不是其生存时间;由于速度不同、眩晕等),然后瞄准行进距离最长的怪物。假设黑轨没有改变,这将使最接近末端的怪物成为目标。

如果黑轨确实发生了很大变化(由于放置了新塔),则要求生成黑轨的对象(并在塔放置时重新生成它)来标记特定追逐点还剩多少个方 block 才能到达终点(它已经知道路径,所以这应该足够简单;我假设您正在使用 A* 算法或类似算法来生成此路径;如果是这样,这个数字几乎就不会在算法中出现)。然后怪物可以在其chasePoint更新时被赋予该值。然后大炮询问范围内的所有怪物距离终点还有多远,并瞄准数量最小的怪物

关于java - 使用寻路时找到最接近目的地的物体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17485381/

相关文章:

iphone - Box2d - 赋予物体吸引力/重力

java - 使用内部联接获取一个月的所有周数据

java - 尝试访问注入(inject)的 Bean 时出现空指针异常

java - 导入 java.util.regex 失败

javascript - HTML5 Canvas A* 星型路径查找

c++ - 递归算法的实现

algorithm - 最短路径算法 : multiple source, 最近目的地

java - 如何使用 Mustache.java 忽略标签?

ios - 如何将物理主体作为子级添加到 SKSpriteNode?

python - 使用矢量将重力添加到弹跳球