unity学习50:NavMeshAgent 区域Areas和cost

目录

1 NavMeshAgent 区域和成本的问题

2 区域Areas

2.1 区域和颜色

2.2 区域和成本

2.3 区域成本的作用

2.4 地图测试准备

2.5 如何实现

2.5.1 unity的2022之前的老版本

2.5.2 unity的2022之后的新版本

扫描二维码关注公众号,回复: 17551398 查看本文章

2.6 如果测试失败,是因为没有bake

2.7 测试前,必须先烘焙

3 区域遮罩:针对 NavMesh Agent

3.1 Ares Mask

3.2 实测OK


1 NavMeshAgent 区域和成本的问题

  • NavMeshAgent 除了代理相关
  • 还有一个Areas

2 区域Areas

2.1 区域和颜色

  • 之前,进行导航寻路的时候,地面上的颜色就是对应的这儿的颜色
  • 不同的区域设定为不同的颜色,可以在这查颜色对比

2.2 区域和成本

  • 每个区域可以设置为不同的成本
  • 系统默认的几个区域也设置了同的成本
  • 比如walk的 为1
  • jump的为2
  • 新建的可以自己修改

2.3 区域成本的作用

  • 智能寻路/导航时再计算起点,终点的智能寻路的时候,会考虑成本
  • 会选择最低成本的道路通过
  • 比如会尽量绕开河流,沼泽地等等

2.4 地图测试准备

  • 新建一个 Area类:river 
  • 修改其cost
  • 把地图上新建一个长方体代表河流,把这个区域选择为 river

2.5 如何实现

2.5.1 unity的2022之前的老版本

2.5.2 unity的2022之后的新版本

  • 需要在gameObject上新增1个 NavMeshModifier
  • 设置数学
  • affected agents: 选择是纯角色,还是全部
  • area type : 属于哪种区域

2.6 如果测试失败,是因为没有bake

  • 我设置为river 也不绕路
  • 我设置为 non walkable 居然也直接走
  • 感觉有啥问题:  不是即时生效的,必须先bake

2.7 测试前,必须先烘焙bake

  • 修改Area 属性,区域后
  • 必须去有 NavMeshSurface的 物体上,点击bake
  • 直到你修改的区域,出现粉红色的区域颜色,代表bake成功

3 区域遮罩:针对 NavMesh Agent

3.1 Ares Mask

  • 角色一定不走某个区域,但是怪物可以走
  • 针对Agent
  • 可以在Area Mask里勾选掉一些区域,这样角色就不走这个区域了
  • 有点像区域了设置了 not walkable的效果

3.2 实测OK