Unity之Navigation初步实践
2020-11-28 21:19
1436 查看
一: 先建一个新的scene , 布置一下场景如下,
二: 准备烘培场景
1⃣️,将需要参与导航的GO,设置成navigation static ,有2种方法
1,选中GO, 在Inspector中选择navigation static , 如下:
2,“Window” -> “AI” -> “Navigation”打开Navigation导航面板,也可以设置“navigation static”, 如下:
2⃣️,开始烘焙
1,注意
a,所有参与导航的GO,需要设置“navigation static”
b,Navigation Area设置 Walkable:可以走 ,Not Walkable:不可以走。显然,Plane可以走,4个Cube不可以走。
c,要点: 要看到渲染效果 1,要打开Navigation面板 2,要开启Gizmos
2,开始烘焙
在“Navigation”面板中,切换到bake , 点击bake , 如下
3, 烘焙效果如下:
三 :创建一个角色,并使其在场景中寻路
1 , 制作主角 ,我使用的是一个胶囊体(主体) + 一个圆柱体 (指示方向),并为主角挂载“Nav Mesh Agent”组建 ,如下图
2,写脚本,挂载到Player(GO)上
public class NavigationPlayer : MonoBehaviour { [SerializeReference] private Camera mainCam;//场景主相机 [SerializeReference] private LayerMask layerWalk;//行走层 private NavMeshAgent nav; private RaycastHit hit; private Ray ray; void Start() { this.nav = this.GetComponent<NavMeshAgent>();//获取导航的组建 } // Update is called once per frame void Update() { if (Input.GetMouseButton(0)) { this.ray = this.mainCam.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out this.hit, 100, this.layerWalk)) { this.nav.SetDestination(this.hit.point); } } } }
3,创建WalkLayer层,让Plane的层级为WalkLayer
4,设置脚本NavigationPlayer.cs的数据,如下
四:结果
可以看到,主角方向指向一直是跟着导航路线变动的。
相关文章推荐
- Unity----Shader①初步使用
- J2ee(Struts+hibernate初步实践)
- 微软模式与实践团队发布Enterprise Library 4.1及Unity Application Block 1.2
- 应用TPM作linux可信起动的初步实践
- 浅谈关于Docker容器互联的初步实践
- 【Unity灯光与渲染技术】LightProbes灯光探测器实践
- 版本控制的分支策略及初步实践
- ELK初步实践
- IOC注入框架——Unity初步
- unity shader 初步模型解析
- Redis进阶实践之七Redis和Lua初步整合使用
- 采用[ICONIX] 方法实践BLOG设计之五 [初步设计复核]
- [Unity3D ARPG网络游戏编程实践]1——初识unity网络编程
- Unity 网络通信(一)Unity Network 初步
- ③HighGUI图形用户界面初步实践
- Unity之Navigation导航系统
- 课程设计——聚类分析的初步实践
- 《C语言及程序设计初步》第40讲实践项目
- 版本控制的分支策略及初步实践
- C语言程序设计实践(OJ)-数组初步