- Navigation面板
- NavMeshAgent: 寻路导航Player
- OffMeshLink: 不联通的跳跃点
- NavMeshObstacle: 导航网格障碍物
导航烘焙
- 选中场景(希望烘焙寻路导航网络的部分),点选Inspector选项卡-Static右下拉三角-勾选NavigationStatic
- Navigation-Object,勾选NavigationStatic,Bake
- 在寻路物体上挂脚本NavMeshAgent,设置相关属性。
- Navigation-Object
- Generate OffMeshLinks:
- Navigation-Bake
- Max Slope:最大爬坡度
- Drop Height:跳下高度
- Jump Distance:跳跃距离
- 脚本使用 agent.SetDestination(point)
- Navigation-Object
导航区域
Navigation-Areas可添加自定义area。例如:沼泽,水池,沙地等等,设置cost值。
一个area的cost将在我们寻找代价最小的路径的时 ,作为导航网格代理扮演着决定性的角色。
场景可选择所属区域。
NavMeshAgent参数AreaMask选择能导航的层。
设置两个对象之间跳跃功能
默认跳跃点
选中场景(希望烘焙寻路导航网络的部分)设置成 NavigationStatic
Navigation-Object 勾选GenerateOffMeshLinks
Navigation-Bake 设置JumpDistance自定义跳跃点
自定义跳跃点,用到组件OffMeshLink
在自定义的两个点其中一个挂上脚本OffMeshLink,设置Start、End更丰富的跳跃动作
如果希望上升过程丰富一些,比如播放一个爬梯或者飞行的动作,那么完全可以通过脚本来自行控制。
首先需要放弃勾选行进物体NavMeshAgent组件下的AutoTraverseOffMeshLink选项,然后编写相应脚本来实现移动过程。在脚本中通过访问NavMeshAgent.isOnOffMeshLink成员来判断是否到达起点或终点,如果到达则访问NavMeshAgent.currentOffMeshLinkData成员来取得起点和终点的信息,最后实现自己的移动过程。完成移动后需要调用NavMeshAgent.CompleteOffMeshLink()来结束手动过渡过程。
导航障碍物
动态障碍物挂NavMeshObstacle,不勾选Carve