这是之前写的带地形惩罚的A*寻路算法:http://blog.csdn.net/clb929/article/details/54745742
前言
在实际开发过程中,发现碰撞计算始终是无法回避的问题,于是就有了这个带地形惩罚和碰撞半径的A*寻路算法
在现实生活中,一个人和一头大象的体积是不同的,能够让一个人通过的路未必能让一头大象通过,同样的,在A*寻路算法中,不同碰撞半径的2个物体的路径选择应该也是不同的。
碰撞半径是什么?在3D游戏中,计算2个物体是否碰撞之前,2个物体都会赋予一个属性--碰撞体积。而2D游戏中,这个计算可以更简化,只要考虑双方的占地面积。现实中的物体是各种各样的,有长条形的、圆形的、方形的、椭圆形的、不规则的,如果用2个物体真实的形状去计算碰撞,那么光是几百个NPC和几百个怪物的碰撞计算就会让你的服务器不堪重负,所以对碰撞体积做一些简化是非常有必要的,球形或圆形是比较好的选择,这种简化连物体的朝向都不用考虑了。
简介
AStarPathFinding类增加了IntersectRadius属性,碰撞半径,小于等于0时无视地形寻路
AStarPathFinding类增加了IsValidMapNode方法,检查指定节点是否是一个可以到达的节点
演示
碰撞半径为1的寻路