连续二维空间中避障的基本寻路

kpo*_*zin 9 xna 2d collision-detection path-finding

我正在编写一个模拟,其中生物对象应该能够朝向环境中的其他任意对象移动,在障碍物周围滑动而不是进行任何智能寻路.我不是想让它计划一条路 - 只是向一个大方向移动,并在障碍物周围反弹.

它是一个2D环境(俯视图),每个对象都有一个用于碰撞检测的边界矩形.没有网格,我不是在寻找A*解决方案.

我无法找到关于这种"哑"基于碰撞的寻路的任何教程,所以我可能不会用最常用的术语来描述它.

有关如何实现这一点的任何建议(或指向教程的链接)?

小智 6

扩展Guillaume关于避障的说法,一种适合你的技术是反重力运动.你把当地的障碍视为反重力的目标来源,重力的目的地,你的计算机控制的角色会在障碍物周围滑动(如肥皂!)到达目的地.

  • 物体很容易发现自己卡在其他物体之间,例如两个相邻的墙壁.它在导航迷宫时效果不佳; 在L形建筑物和其他此类障碍物周围移动.它不适合在FPS内的建筑物内,如需要爬楼梯的FPS.然而,它适用于人口稀少的大型开放空间. (2认同)

PAT*_*ume 5

你可以结合两种转向算法:

寻道:在当前速度和朝向目标的所需速度之间的方向上施加转向力

避障:您使用一个长度恒定的时间乘以车辆当前速度的方框来预测车辆的未来.与此框相交的任何障碍都是潜在的碰撞威胁.选择最近的这种威胁是为了避免.为了避开障碍物,在障碍物中心的对面施加横向转向力.另外,施加制动(减速)力.这些力随紧急程度(从箱尖到可能碰撞点的距离)而变化.转向线性变化,制动以二次方式变化.

您可以在网站上找到更多" 自主角色的指导行为 "

问候

纪尧姆

PS:这假设你正在使用点/速度/加速度方法来对象的运动.