您的位置:首页 > 其它

游戏常用算法1-视线追踪算法

2014-07-09 22:21 405 查看

游戏常用算法1-视线追踪算法

在游戏中我们常常看到这样一种情况,敌人死死盯着目标不放,好像非常的智能。如在《三国无双》中,当角色进入敌人的领地之后,敌人就会想你奔袭而来,拦也拦不住。这是怎么做到的呢。有一种简答的游戏算法视线追踪算法,主角A坐标,敌人B坐标。A到哪,B也跟到哪,如图所示



图1
A(x1,y1) ,B (x2,y2),这样就可以得到敌人追击主角的路线,BA(x1-x2,y1,-y2),这样实现了追踪敌人目的,可是这是最好的吗?不,你不感觉这样很突兀吗,B的方向突变很快,因为重心点事B,而不是A,这样处于一种被动的情况,而实际是A主角是被动的追击的,跟实际情况不相符,我们换一种思路。以A为圆心,B就可以把握全局,决定运动的方向,而不是被动式的跟着A 跑。哪怎么实现呢。

有一种解决的该类问题算法,且让我娓娓道来。这涉及到向量计算。不要看到数学就头晕。很简单的,高中我们就学过。向量是什么呢,有方向有大小的。如 ------------> 他就是长这样,还记得吗。这个有什么呢。这个要放到我们的问题中才有用,不然一点用处都没有。我们不是要【 B
------->A 】吗,这个就可以表示B到A的向量,只要能确定A和B的位置,我就可以找到B到A的一条路径,这条路径就是追踪路线。那怎么找出呢。

我们的界面坐标位置是根据坐标轴XY确定的,那么就可以在坐标轴上找到AB的坐标,如图显示。



图2
A的向量(x1,y1),B的向量(x2,y2),那A->B的向量坐标就是AB(x1-x2,y1-y2),所以A追踪B的路线就是向量AB,AB的举例就是,根据勾股定理得到向量AB 长度

,把AB标准化就是AB( (x1-x1)/Len,y1-y1/Len),这样整个算法就显示出来了。只要给出A,B的坐标就可以实现追踪。在真实的游戏开发中,我们还要考虑速度、摩擦力还有使用的交通工具等,大家在选择算法的时候,应该根据实际情况合理选择,后面还继续分享A*算法常用的游戏算法。敬请期待!!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: