您的位置:首页 > 移动开发 > Unity3D

Unity寻路导航相关组件

2018-03-06 15:50 513 查看
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-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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: