【Unity基础知识】Unity开发之导航

发布 : Unity培训      来源:Unity干货资料

2020-08-12 11:24:05

大家好,我是优就业的小优,又和大家见面了。

今天我们一起来学习Unity中的导航网格代理组件,这个组件的作用就和它的名字一样是用来进行自动寻路。它会帮我们在游戏场景中生成一块区域,哪里可以通行,哪里无法通行,便于游戏角色在场景中自动寻路,完成场景漫游。在游戏中,经常会有这样的场景,玩家进入副本时,怪物会自行规划最优路径,避开障碍物,找到玩家位置,进行攻击。角色在做任务时,玩家只需要点击任务,角色就会自动寻路过去。

需要注意的是,它只对3D环境有效,所以我们首先搭建需要使用的场景,下图中创建的Plane就是我所使用的场景。

现在来看看如何使用导航也就是NavMesh,在完成场景搭建后,从窗口菜单选择Navigation,会弹出一个如下图所示的面板,它就是我们的NavMesh导航网格。

Agent Radius:定义网格和地形边缘的距离

Agent Height:定义可以通行的最高度

Max Slope:定义可以爬上楼梯的最大坡度

Step Height:定义可以登上台阶的最大高度

Drop Height:允许最大下落距离

Jump Distance:允许最大的跳跃距离

在Bake(烘焙场景)之前一定要确定勾选Static

其实就是确保Static下勾选了Navigation Static,这里的Navigation Static意味着在游戏运行期间,这个游戏对象不能移动。

可以根据自行的需要去设置参数,设置好参数之后点击Bake(烘焙场景),等到烘焙完毕会看到场景中覆盖一层蓝色的表面,蓝色的一层叫做可行走区域,也就是让玩家和敌人能够运动的区域。

此时,游戏当中已经有了NavMesh了,接下来去实现让玩家运动的功能,要想让玩家运动,我们可以通过一个组件叫NavMeshAgent组件,它是用来控制物体在NavMesh上移动,创建一个Cube作为玩家,为其添加NavMeshAgent组件。

Speed:最大移动速度

Angular Speed: 运动时的最大角速度

Acceleration:最大加速度,控制速度的快慢变化

Stopping Distance:制动距离,到达目标点的距离小于这个值

Auto Braking:勾选,到达目标点后停止运动,没有缓冲运动

要想让物体移动,需要给物体一个移动目标点,所以在场景中创建一个Point,作为目标点。

准备工作已经完毕,给Cube添加脚本CubeMove,编写让其移动的代码。


只需要简单的六行代码就可以实现自动寻路功能,是不是很简单啊。

THE END  

声明:本站稿件版权均属中公教育优就业所有,未经许可不得擅自转载。

领取零基础自学IT资源

涉及方向有Java、Web前端、UI设计、软件测试、python等科目,内容包含学习路线、视频、源码等

点击申请领取资料

点击查看资料详情 

收起 


 相关推荐

问题解答专区
返回顶部