unity自动寻路功能.docx
- 文档编号:5800568
- 上传时间:2023-01-01
- 格式:DOCX
- 页数:8
- 大小:248.72KB
unity自动寻路功能.docx
《unity自动寻路功能.docx》由会员分享,可在线阅读,更多相关《unity自动寻路功能.docx(8页珍藏版)》请在冰豆网上搜索。
unity自动寻路功能
unity自动寻路功能
(1)场景布置。
在工程中新建一个场景,命名为Navi。
在场景中添加两个Cube,分别重命名为target和barrier,target为我们最终要寻找的对象,barrier为寻路中的障碍物。
再创建一个Plane,重命名为floor,作为寻路时所走的地板。
最后添加一个方向光源。
调整场景中各对象的位置和大小,调整后的效果如下所示:
(2)在场景中添加一个人物,本例中借用的是第三人称(3rdPersonController)中的人物。
导入CharacterController包,将CharacterControllers文件夹下的3rdPersonController拖入场景视图,去掉自带的所有组件后,将其重命名为player。
效果图如下:
(3)烘焙地面
选中floor,菜单栏中选择window——>Navigation,打开navigation窗口。
在Navigation下的Object选项卡中勾选“NavigationStatic”,其他保持默认即可。
打开Bake选项卡,根据需要修改相关参数(也可以保持系统默认参数不变)中点击右下角的按钮“Bake”即可。
操作完后,会发现Scene场景中地板的颜色改变了。
并且还可以发现,Project视图下多了一个名为“Navi”的文件夹,此文件中出现了一个文件“NavMesh”.
(4)烘焙障碍物
选中障碍物barrier,在Navigation下的Object选项卡中勾选“NavigationStatic”,“NavigationLayer”选择“NotWalkable”.打开Bake选项卡,根据需要修改相关参数(也可以保持系统默认参数不变)中点击右下角的按钮“Bake”即可。
操作完后,会发现障碍物会有一些变化。
如下图:
障碍物周围一定距离内蓝色恢复成了之前的颜色,表示这部分区域是不可以被通过的。
(5)给人物player添加NavMeshAgent组件
选中player,菜单栏中选择Component——>Navigation——>NavMeshAgent,给人物添加NavMeshAgent。
操作完后,会发现人物上多了一个类似于胶囊型的绿色线型的圈圈。
在Inspector视图中调整NavMeshAgent组件的相关参数,主要是Radius、Height、BaseOffset等,使绿色线形区域刚好把人物包住。
调整后的参数如下:
调整好后,人物如下:
(6)添加一个简单的控制脚本
新建一个C#脚本,命名为NaviTest。
代码编辑如下:
//NaviTest.cs
usingUnityEngine;
usingSystem.Collections;
publicclassNaviTest:
MonoBehaviour{
publicTransformtarget;
privateNavMeshAgentagent;
voidStart()
{
if(target==null)
{
return;
}
agent=gameObject.GetComponent
agent.SetDestination(target.position);
}
}
(7)代码绑定与赋值
将NaviTest.cs绑定到人物player上,将Target赋值为hierarchy视图中的立方体target。
点击运行按钮,会发现player会绕过障碍物,找到目标物体target。
但是,由于没有给人物添加动画效果,所以player是像溜冰一样“滑行”找到目标物的。
给player添加动画方法如下:
菜单栏中选择Component——>Miscellaneous——>Animation,添加动画组件,将Animation赋值为run(导入的CharacterController包中自带的动画)。
此时再点击运行键,会发现人物player会绕过障碍物跑到目标物体那儿去。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- unity 自动 功能