使用路径查找时查找最接近目标的对象

时间:2013-07-05 09:19:45

标签: java game-physics pathing

我希望得到一些关于我的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等......

黑色方块应该看起来像是射击怪物,绿色圆圈是射击范围。 但是我如何决定子弹的去向?我更希望如果黑方在前方射击暴徒,但由于小怪可以减速/震惊,因此没有特定的顺序,我怎么知道哪个暴徒最长?

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是让每个怪物跟踪它行进的距离(而不是它的生存时间;由于不同的速度,惊人等)然后瞄准行进最长距离的那个。假设黑色轨道没有改变,这将使最靠近终点的怪物成为目标。

如果黑色轨道确实发生了很大的变化(由于放置了新的塔楼),那么请询问产生黑色轨道的物体(并在塔楼放置时重新生成),以标记特定追踪点离开的距离为多少块。结束(它已经知道路径所以这应该足够简单;我假设你正在使用A *算法或类似的方法来生成这条路径;如果是这样的话,这个数字几乎完全不属于算法)。然后怪物可以在其chasePoint更新中获得该值。然后大炮询问范围内的所有怪物,他们还要走多远,并以最小的数量为目标