Unity新导航系统---NavMeshAgent组件&NavMeshLink组件

系列文章目录

Unity新导航系统—NavMeshAgent组件&NavMeshLink组件



前言

NavMeshAgent组件:用于控制游戏对象(如角色、AI等)在导航网格(NavMesh)上的移动和路径寻找。
NavMeshLink组件:用于创建两个导航网格点之间的可导航路径,允许游戏角色或代理在这些点之间移动。
这是我的学习笔记,记载的是NavMeshAgent组件和NavMeshLink组件的用法和各个属性的用处(请先去看我的“Unity新导航系统—NavMeshSurface组件 ”的文章,因为这两个组件的介绍要基于它),不能保证完全准确但是初学者可以参考一下。


NavMeshAgent组件

请添加图片描述
烘焙好场景。如果你不了解NavMesh烘焙的话请先参考我的“Unity新导航系统—NavMeshSurface组件 ”的文章,这个场景就是之前讲过的场景。

请添加图片描述
为Player添加一个NavMeshAgent组件。
请添加图片描述
实现让Player来到鼠标点击位置,实现自动导航。
请添加图片描述
Agent Type:用来设置当前Agent的类型。
请添加图片描述
请添加图片描述
Base Offset:用来设置物体在竖直方向的偏移。
请添加图片描述
请添加图片描述
Speed:用于设置物体的最大速度,这个不是物体的当前移动速度,是最大速度。
请添加图片描述
请添加图片描述
当你改为9999后,它的速度并没有快很多。
请添加图片描述
请添加图片描述
请添加图片描述
这是因为它的加速度Acceleration太小了,调大后它的速度就非常快了。
请添加图片描述
请添加图片描述
Angular Speed:用于设置物体的最大角速度,这个不是物体的当前角速度,而是最大角速度。
请添加图片描述
请添加图片描述
你改为999后它也没快很多。
请添加图片描述
请添加图片描述
还是一样调大加速度,它的角速度就明显变大了。
请添加图片描述
请添加图片描述
请添加图片描述
Stopping Distance:物体与目标点相距多远时停下。
请添加图片描述
请添加图片描述
Auto Braking:自动刹车,当物体快到目标点时自动减速,到目标点停止。
请添加图片描述
请添加图片描述
不勾选的话物体全程不会减速到目标点时速度立刻为零。
请添加图片描述
请添加图片描述
复制出一个Player,让它俩同时来到一个地方,它们会发生碰撞。
请添加图片描述
请添加图片描述
Radius用于设置碰撞体半径,把它俩的Radius设为2,它俩就不会碰撞了。
请添加图片描述
请添加图片描述
Height用于设置碰撞体高度。
请添加图片描述
Quality是碰撞质量,让它保持High Quality就行。
请添加图片描述
请添加图片描述
请添加图片描述
Priority用于设置优先级,左边的优先级设为1,右侧的设为2,越小优先级越高。
请添加图片描述
此时永远都是优先级更高的左边的Player来到鼠标点击位置。
请添加图片描述
请添加图片描述
Auto Traverse Off Mesh: 自动穿越非网格区域。
请添加图片描述
请添加图片描述
取消勾选Auto Traverse Off Mesh后,它就无法来到对岸了,而且此时也无法进行移动了。
请添加图片描述
自动重新寻路,勾选后代理会在路径被阻挡时自动重新寻路。
请添加图片描述
Area Mask:用于指定当前Agent可以走哪些区域。
请添加图片描述
请添加图片描述
请添加图片描述
当前Player所在的区域是Walkable,当改为Water后它直接无法移动,并且报错。
请添加图片描述
请添加图片描述
改为Walkable后它就可以正常移动了。

NavMeshLink组件

请添加图片描述
请添加图片描述
勾选Generate Links后进行烘焙。请先参考我的“Unity新导航系统—NavMeshSurface组件 ”的文章,这个场景就是之前讲过的场景。
请添加图片描述
所有区域都变为蓝色了。
请添加图片描述
请添加图片描述
请添加图片描述
为左侧的平面添加NavMeshModifier组件,并把左侧平面改为Water区域,重新烘焙,左侧就变为粉红色了。
请添加图片描述
把Player放在那个位置。
请添加图片描述
此时当你想让Player来到下方时,它先来到右侧平面再来到下方(因为右侧平面的cost要小很多),这显然是不合适的。
请添加图片描述
请添加图片描述
取消勾选Generate Links,重新烘焙。
请添加图片描述
为左侧平面添加一个NavMeshLink组件。
请添加图片描述
你会看到两个黄色的立方体,这两个黄色的立方体一个是起点一个是终点,点击它就可以拖动到你想要的位置。
请添加图片描述
请添加图片描述
拖到如图位置,你也可以调整组件的起点和终点坐标来移动。
请添加图片描述
此时点击下面它就不会跑到右边去了,同时还可以在两个平面间穿越。
请添加图片描述
Agent Type表示会受到影响Agent,设置为Humanoid时此时只有Humanoid才能进行穿越,其它类型的不能。
请添加图片描述
请添加图片描述
把NavMeshAgent的Agent Type设为Car,并为Car烘焙专属的NavMesh。
请添加图片描述
此时Player就无法穿越两个平面了。
请添加图片描述
勾选Bidirectional后就可以从起点到终点也可以从终点到起点。取消勾选后就只能从起点到终点。
请添加图片描述
此时只能从起点到终点。
请添加图片描述
Swap用于交换起点和终点的位置。
请添加图片描述
此时它就只能从右侧平面到左侧平面了。
请添加图片描述
请添加图片描述
Align Transform:让物体的 Transform 与起点和终点的连线对齐。
请添加图片描述
请添加图片描述
请添加图片描述
修改终点的位置后点击Align Transform会有上面三个图的效果。
请添加图片描述
请添加图片描述
Start Point和End Point的坐标其实是局部坐标,是相对于带有NavMeshLink组件的物体。
请添加图片描述
请添加图片描述
当你把End Point的坐标置为零时会发现它和左平面的坐标系重合。
请添加图片描述
请添加图片描述
Width用来设置连接区域的宽度。
请添加图片描述
请添加图片描述
此时它变宽了。
请添加图片描述
变宽的作用是让Player可以在连接区域内任意位置穿越。
请添加图片描述
Cost Modifier用于设置跨越消耗,Player会选择消耗少的地方来跨越。
请添加图片描述
下方的消耗为3上方的消耗为1。
请添加图片描述
此时Player 会优先走上方,而不是看似更近的下方。
请添加图片描述
请添加图片描述
请添加图片描述
Area Type 参数用于指定链接终点区域的类型,影响导航代理在通过该链接时的行为和路径成本。
请添加图片描述
请添加图片描述
此时终点在Water区域内,所以应当把Area Type改为Water,这个是需要你手动设置的不会因为终点放在Water区域内Area Type就自动变为Water。
请添加图片描述
请添加图片描述
虽然左边是Water区域,但是你也可以把Area Type设置为Not Walkable,此时它就无法从右边走到左侧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值