游戏中常见的几种追踪算法
来源:互联网 发布:同花顺ifind mac版 编辑:程序博客网 时间:2024/06/06 10:39
所谓追踪,相对于另外一个角色来说是逃跑,首先需要做出追和逃跑的决策判断。
1.坐标追踪
也是最基本追逐方式,他根据要追踪对象的坐标来修改追踪者的坐标,使两者的距离逐渐缩短。
一个简单的例子:
Point m_pPrey; /// 被追踪者
Point m_pAtta; /// 追踪者
对于追踪者来说: 新位置 = 旧位置 + XY速度 ;
2 m_pAtta.x ++;
3else if( m_pAtta.x > m_pPrey.x )
4 m_pAtta.x --;
5
6
7if( m_pAtta.y < m_pPrey.y )
8 m_pAtta.y ++;
9else if( m_pAtta.y > m_pPrey.y )
10 m_pAtta.y --;
2.视线追踪
视线追踪方式,主要是描述每一时刻都追踪者会沿着被追逐者之间的直线方向运动。如图所示:
通过图可以更好描述此问题,此问题的求解关键在于求出连接追踪者与猎物之间的直线,可以通过向量知道:2个向量想减即可得到。
可以分别用追踪者与猎物的位置坐标构造出两个向量,假设b 代表追踪者位置向量,a 代表猎物位置向量。做向量减法a-b 便得到了向量c,将c 的起点置于追踪者的位置上,就得到了一条指向猎物的向量c. 此时,令:
追踪者X 方向速度 / 追踪者Y 方向速度 = c 向量x 轴分量/ c 向量y 轴分量 .即可求解。
3.拦截追踪
所谓拦截追踪,如果考虑的是被追逐的目标太远,如果2者速度一样,或者相差不大,有可能很难追上,玩过实况足球的都知道,如果采用上面的2中追逐方式,可能错过最佳的防守位置。下面是拦截追踪的一个示例图:
对于追踪者来说,他只需要知道被追踪者的位置,方向与速度,讲会计算一个最佳的拦截位置。然后你会发现这只是一个简单的追踪问题。且需要的时间t最少。
整个3种追踪的源码代码 以及 demo都共享:
/Files/expter/chase.rar
- 游戏中常见的几种追踪算法
- Unity游戏中常见的几种Camera
- 游戏开发中常见的几种碰撞检测
- 几种常见的算法
- 几种常见的算法
- java 中常见的几种算法,解释很详细
- 游戏中常见的洗牌算法
- 图的几种常见的算法
- 总结:几种常见的查找算法
- 几种常见算法的JAVA实现
- 几种常见的查找算法
- 几种常见的排序算法
- java常见的几种排序算法
- 几种常见的排序算法
- 几种常见的排序算法
- 几种常见的排序算法
- 几种常见的排序算法小结
- 几种常见的排序算法实现
- MFC消息映射梳理
- 有反型java 对象转到xml xstream方式
- MFC windows mobile
- 最近在做Lucene.net 公司文档资料搜索
- 同上
- 游戏中常见的几种追踪算法
- 预编译头 /YC /YU的设置
- 网易面试注意点:基础知识
- 2010 有道难题3
- 类与结构体的大小
- 匈牙利算法;直接贴来的;理解交替轨的基础上,画图看一下算法流程,发现没有问题;
- 操作系统学习笔记(27)--初始化中断
- 3D未来争夺战 光线追踪算法浅析
- 操作系统学习笔记(28)--初始化进程调度