我正在创建一个游戏,我试图使用 Bresenham 的线算法(http://en.wikipedia.org/wiki/Bresenham%27s_line_algorithm)让敌人在 2D 地图上追逐玩家。游戏的概念类似于下面的概念。下面的伪代码来自http://herselfsai.com/2007/07/simple-predator-prey-chase-algorithms.html
prey current position ( xp, yp )
predator current position ( xP, yP )
x = x position to move to
y = y position to move to
dx = xp – xP
dy = yp – yP
Adx = AbsoluteValue ( dx )
Ady = AbsoluteValue (dy )
if ( xp > xP ) stepX = 1 else stepX = -1
if ( yp > yP ) stepY = 1 else stepY = -1
if ( Ady > Adx ){ //the y distance from prey is larger than the x distance
fraction = 2*dx – dy;
if (( yP != yp ) && ( fraction > 0 )){
x += stepX
}
y += stepY
}else{
fraction = 2*dy – dx;
if (( xP != xp ) && ( fraction > 0 )){
y += stepY
}
x += stepX
}
敌人在地图上追逐玩家,但它是 0、45、90 等角度的以太,而不是直线。此外,在我的代码中,敌人也有随机速度(介于 0 和 5 之间),有时会过度射击玩家,然后一次又一次地尝试纠正和过度射击。这可能是一个单独的问题。
我肯定只是没有完全掌握算法的概念。实现这一点的正确方法是什么?
提前致谢。