Unity自动寻路之导航

现在游戏中的自动寻路基本就是两种做法 A*算法  和Unity中的导航系统

自动寻路导航的步骤

1.对场景进行烘焙

2.为寻路物体添加NavMeshAgent组件

3.为寻路物体添加脚本  设置寻路物体的目标点触发寻路的方式

在学习导航之前  必须先学习bake(烘焙)烘焙其实就是将模型上的一些信息记录到模型上,比如光照信息等   

那么为什么需要进行烘焙,由于在加载场景的时候对于模型上面的光照信息等都需要CPU进行计算,很消耗游戏的性能

为了性能优化,对场景进行烘焙烘焙过之后场景中的光照信息等就记录在模型上面,加载的时候不需要CPU进行计算 从而提高游戏性能    导航烘焙就是选中需要烘焙的物体选择statc中的Navigation Static 在Navigation中Bake 进行烘焙

Agent Radius表示行走面到边缘的之间的距离

Agent Height(代理高度)指可以通过的高度一般用于山洞 

Max Slope表示可以通过最大坡度

Step Height表示可以通过的最大高度步长高度  ,通常用于台阶

Generated Off Mesh Links 主要用于断层之间跳跃以及断崖跳跃

DropHeight 表示下落的高度

Jump Distance 表示跳跃的距离

Advanced 高级设置

Min Region Area 允许你剔除掉小的非连接NavMesh区域,当NavMesh区域小于指定值时将被剔除。

请注意:有些区域可能无法被移除,尽管有Min Region Area 的设置,原因是NavMesh的构建是一个个的网格并行构建。当一个区域横跨两个网格将不会被移除,因为区域修剪过程中无法获取到周围的网格。

Voxel Size 立体像素尺寸

Manual voxel size :允许你改变烘焙操作过程中的精确性。

Navigation在构建寻路网格过程中,第一遍会把场景光栅化为体素,然后提取可行走区域,最后可行走区域会烘焙成网格。因此体素尺寸Voxel Size的决定了寻路网格烘焙的精准性。

提示:默认的体素设置最好的权衡了准确性和烘焙速度。在烘焙场景寻路的过程中,体素的增加会造成4x倍的内存消耗和4x倍的时间消耗。因此通常,你不需要自己去设置Voxel Size。

Areas面板

这里用于表示每个行走面的消耗   由于Navigation实现寻路其实是内置A*算法,在计算最短路径的时候   这些Cost相当于权值 会直接影响到下一步要走哪里     这里提供三种Areas  1.Walkable  表示可行走区域   NotWalkable表示不可行走区域   Jump表示跳跃的地方也就是 offMesh Links的地方    也可以用户自己定义Areas

NavMeshAgent组件

NavMesh Obstacle组件

NavMesh Obstacle组件作用,由于烘焙时进行Navgation Static这时场景中的物体都是静态的 如果要在之后生成新的障碍物或者是移动的物体   那么就需要用到这个组件

Shape由两种类型 box 和 capsule

勾选Carve这个时候这个障碍物会在行走面上面开一个洞 如果移动的话就会不断的撕出洞 加了NavMesh Obstacle组件时自带collider包围盒的

在实现自动寻路时需要了解NavMeshAgent中的重要API

常用API:

ActivateCurrentOffMeshLink :激活或禁止当前off-MeshLink. 
CalculatePath :计算到某个点的路径并储存 
CompleteOffMeshLink :完成当前offMeshLink的移动 
Move :移动到相对于当前位置的点 
ResetPath :清除当前路径 
SetDestination :设置目标点 
SetPath :设置一条路线 
Warp :瞬移到某点
remainingDistance:到目标点的距离
desiredVelocity:期望速度,方向指向的是到达目标点的最短路径的方向
 一般就是鼠标拾取寻路和怪物移动

鼠标拾取寻路  

怪物寻路

只需要把agent.destination设置为主角的位置  即可

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值