orca自动避障组件

一、一般静态障碍物

如box、wall、tower等障碍物,可以设置成prefab,在运行时自动加载;

  1. 在节点下新建一节点,如node ;
  2. 将脚本obstacleCtrl挂载到node节点上;
  3. 确定碰撞区数量:box、poly的数量;这个boxcollider只是为了编辑界面进行显示,正式运行时无效。
  4. 编辑各个碰撞区边界;
  5. 保存场景,在程序正式运行时,会自动识别静态障碍物边界,并删除collider组件。

二、地图上限制通过的障碍区域

也可将地图节点设置为预制体,动态加载。

  1. 在地图节点下新建一节点,如node ;
  2. 将脚本obstacleCtrl挂载到node节点上;
  3. 确定碰撞区数量:box、poly的数量;这个boxcollider只是为了编辑界面进行显示,正式运行时无效。
  4. 编辑各个碰撞区边界,;

5.保存场景,在程序正式运行时,会自动识别静态障碍物边界,并删除collider组件。

三、移动避障体

  1. 在需要移动避障的节点actor下,新建一个名为“agent”的空子节点;
  2. 在agent上挂载AgentCtrl脚本;
  3. 设置移动避障体的参数:主要是半径、最大速度、 查找邻居距离、最大邻居数量
  • 查找邻居距离,不小于两个碰撞体的半径和;
  • 最大邻居数量,建议不小于被包围的节点的数量;
  1. 在actor上,新建一个脚本组件actorCtrl;
  2. actorCtrl继承NodeCtrl基类组件;
  3. 在actorCtrl里实现setPrefV方法即可;

setPrefV,设置actor不需要避障时的默认移动速度。

四、TiledMap地图上自动识别障碍物层

  1. 在TiledMap节点(如tMap)上挂载ObstacleCtrl脚本
  2. 在设置里加载tMap节点;
  3. 输入障碍物层的层数
  4. 输入障碍物层名字的字符串
  5. 指定TiledMap的实际缩放比例scale

五、运行ORCA

  1. 在场景的Canvas下新建空子节点,如orca;

  2. 在orca子节点上挂载ORCACtrl脚本;

  3. 可选择调试、防抖动等设置;

  4. 程序运行中,即可自动识别动静态障碍物进行避障。

六、备注

  1. 上述动静态障碍物、TiledMap节点都可设置为预制体,支持动态加载;
  2. 支持程序中动态删除,删除时直接删除节点即可,障碍体会自动删除;
  3. 为确保识别准确,动态障碍物的缩放,不会影响半径等属性,需要手动设置这些属性。
4赞

图片咋都看不了

已经修改,markdown格式一不小心上传错误

store地址:
https://store.cocos.com/app/detail/7501