一、一般静态障碍物
如box、wall、tower等障碍物,可以设置成prefab,在运行时自动加载;
- 在节点下新建一节点,如node ;
- 将脚本obstacleCtrl挂载到node节点上;
- 确定碰撞区数量:box、poly的数量;这个boxcollider只是为了编辑界面进行显示,正式运行时无效。
- 编辑各个碰撞区边界;
- 保存场景,在程序正式运行时,会自动识别静态障碍物边界,并删除collider组件。
二、地图上限制通过的障碍区域
也可将地图节点设置为预制体,动态加载。
- 在地图节点下新建一节点,如node ;
- 将脚本obstacleCtrl挂载到node节点上;
- 确定碰撞区数量:box、poly的数量;这个boxcollider只是为了编辑界面进行显示,正式运行时无效。
- 编辑各个碰撞区边界,;
5.保存场景,在程序正式运行时,会自动识别静态障碍物边界,并删除collider组件。
三、移动避障体
- 在需要移动避障的节点actor下,新建一个名为“agent”的空子节点;
- 在agent上挂载AgentCtrl脚本;
- 设置移动避障体的参数:主要是半径、最大速度、 查找邻居距离、最大邻居数量 ;
- 查找邻居距离,不小于两个碰撞体的半径和;
- 最大邻居数量,建议不小于被包围的节点的数量;
- 在actor上,新建一个脚本组件actorCtrl;
- actorCtrl继承NodeCtrl基类组件;
- 在actorCtrl里实现setPrefV方法即可;
setPrefV,设置actor不需要避障时的默认移动速度。
四、TiledMap地图上自动识别障碍物层
- 在TiledMap节点(如tMap)上挂载ObstacleCtrl脚本
- 在设置里加载tMap节点;
- 输入障碍物层的层数
- 输入障碍物层名字的字符串
- 指定TiledMap的实际缩放比例scale
五、运行ORCA
-
在场景的Canvas下新建空子节点,如orca;
-
在orca子节点上挂载ORCACtrl脚本;
-
可选择调试、防抖动等设置;
-
程序运行中,即可自动识别动静态障碍物进行避障。
六、备注
- 上述动静态障碍物、TiledMap节点都可设置为预制体,支持动态加载;
- 支持程序中动态删除,删除时直接删除节点即可,障碍体会自动删除;
- 为确保识别准确,动态障碍物的缩放,不会影响半径等属性,需要手动设置这些属性。








