Nav Mesh Agent
效果图
创建地面.
1.1 在Hierarchy下创建一个空的游戏对象命名为Ground:
右键 –> Create Empty –>重命名为Ground.
Ground下面创建五个Plane游戏对象:
右键 –> 3D Object –> Plane, 创建一个之后进行复制即可.`
提示:创建一个之后,按Ctrl + D 进行复制即可.
1.2 两个Plane分开,中间用另外三个Plane游戏对象进行连接.添加导航.
2.1 先添加导航窗口: 菜单栏Window –> Navigation
2.2 进行烘焙: 选中Ground下所有的Plane –> 点击Inspector下static边上的三角形 –> 选中Navigation Static –> 切换到Navigation窗口 –> 点击Bake –> 直接点击 Bake进行烘焙.
- Hierarchy下创建一个Cube作为导航的目标点.创建一个Sphere最为Player.
选中Player –> Inspector界面下Add Component 添加组件 –> 搜索Nav Mesh Agent(实现自动导航)组件进行添加 –> 在Project下创建一个Scripts用来存放C#脚本 –> 右键Create一个C#脚本,起名字为PlayController - 编写C#脚本
public class PlayController : MonoBehaviour
{
//定义接收导航网络组件
private NavMeshAgent nav;
//定义目的地的方块
public Transform cubePos;
void Start()
{
//赋值
nav = this.transform.GetComponent<NavMeshAgent>();
}
void Update()
{
//设置目的地的位置为方块的位置
nav.SetDestination(cubePos.position);
}
}
编写完成后, 将脚本拖拽到之前创建好的Sphere上面, 然后会在Inspector界面下看到该脚本下有一个CubePos,是用来设置目的地的位置,直接将之前创建好的Cube拖拽到CubePos上面即可.
5. 添加材质.
5.1 在Project中创建一个空的文件夹Metarials用来存放所有材质.
5.2 右键 –> Create –> Material –> Albedo –> 设置颜色 –> 拖动创建好的Material到游戏对象上面.
注意:一个材质只能使用一种颜色,不能为多个游戏对象添加颜色.可以创建多个材质来实现.
5.3 为桥和小球添加相应颜色的材质.
5.4 Ctrl + D 复制多个小球, 这里创建了三个材质,颜色分别是Red,Green,Blue.所以创建一个三个空的游戏对象用来存放不同颜色额的小球.
可以运行看一下效果.
6. 指定导航路径.
6.1 在之前添加的Navigation窗口下的Areas里面添加三个区域, Name分别为Red, Green, Blue.
6.2 分别选中三座桥,在各自的Navigation窗口下的Object里的Navigation Area中选中相对应的颜色(默认是地面).之后重新烘焙.
注意:改过Navigation Area之后要重新烘焙.
6.3 导航走的区域已经分好了, 但是默认状态下可以走所有的区域.下面修改每种颜色的Sphere可以走的区域. 选中需要修改的Sphere –> 在Nav Mesh Agent 组件里面的最下方有个 Area Mask –> 选中 Walkable(默认是全部) 和 自己可以走的颜色.
7. 运行之后会发现小球会在cube的外面转圈, 这是因为小球是有质量的, 可以在
Nav Mesh Agent组件中的Quality调整为None, 在运行.
面板中的一些参数
Object | ||
---|---|---|
Navigation Static | 勾选后表示该对象参与导航网格的烘焙 | |
Generate OffMeshLinks | 勾选后可以跳跃导航网格和下落 | |
Navigation Area | 物体烘焙网格属于哪个图层, 可通过代码让游戏人物走不同的路 | |
Bake | ||
Agent Radius | 具有代表性的物体半径, 半径越小生成的网格面积越大.和边缘的距离 | |
Agent Height | 具有代表性物体的高度 | |
Max Slope | 斜坡的坡度 | |
Step Height | 台阶高度 | |
Drop Height | 允许跳跃最大下落距离 | |
Jump Distance | 允许最大的跳跃距离 | |
Manual Voxel Size | 手动输入像素值 | |
Min Region Area | 网格面积小于该值则不生成导航网格 | |
Height Mesh | 选中该项,将会保存高度信息,同事也会消耗一些性能和存储空间 |
Nav Mesh Agent 组件面板
Agent Size | 尺寸控制 | |
---|---|---|
Radius | 物体的半径 | |
Height | 物体的高度 | |
Base Offset | 偏移度 | |
Steering | 行动控制 | |
Speed | 物体进行的最大速度 | |
Angular Speed | 行进过程中转向是的角速度 | |
Acceleration | 物体的行进加速度 | |
Stopping Distance | 距离目标点小于多远距离后便停止行进 | |
Obstacle Avoidance | 躲避障碍参数 | |
Quality | 质量 | |
Priority | 优先级 | |
Path Finding | 路径寻找 | |
Auto Traverse Off Mesh Link | 是否采用默认方式度过连接路径 | |
Auto Repath | 在行进过程中,因某些原因中断的情况下,是否重新开始寻路 | |
Auto Mask | 自动遮罩 |