Unity3D-NavMesh导航网格寻路
2016-05-17 20:05
483 查看
NavMesh(导航网格)是3D游戏世界中用于动态物体实现自动寻路的技术。
NavMesh系统是人工智能的一种,它使用一个添加在游戏对象上或者作为游戏对象父物体的名为“导航网格代理”(NavMeshAgent)的组件来控制该游戏对象寻找能够通过的路径,并最终到达目的地。
自动寻路还可以实现绕过障碍、爬上与跳下障碍物、按类别寻找属于自己的道路、动态设置道路中的障碍等技术。
下面用一个简单的Demo来介绍NavMesh的应用:
这样就实现了NavMesh导航网格寻路。
NavMesh系统是人工智能的一种,它使用一个添加在游戏对象上或者作为游戏对象父物体的名为“导航网格代理”(NavMeshAgent)的组件来控制该游戏对象寻找能够通过的路径,并最终到达目的地。
自动寻路还可以实现绕过障碍、爬上与跳下障碍物、按类别寻找属于自己的道路、动态设置道路中的障碍等技术。
下面用一个简单的Demo来介绍NavMesh的应用:
1.在Scene场景中添加Cube设置场景,如图所示:
2.选择除了主角、目标以及摄像机、直线光以外的所有物体,在Inspector窗口的右上角勾选Static,成为静态物体,并设置成Navigation Static静态类型。
3.在主窗口中选择[Window]→[Navigation],打开Navigation窗口。该窗口用于生成路径寻找所需要的导航网格结构,代理将根据该导航网格进行寻路计算。确保勾选了“Navigation Static”。点击Bake进行烘培。
4.选择需要寻路的游戏对象,为它添加一个NavMeshAgent组件。
5.编写寻路代码,新建一个脚本:
//寻路网格导航 using UnityEngine; using System.Collections; public class DemoNavigation : MonoBehaviour { private NavMeshAgent agent; //导航代理 public Transform TransHero; // Use this for initialization void Start() { agent = this.GetComponent<NavMeshAgent>(); if (agent && TransHero) { agent.SetDestination(TransHero.transform.position); } } }运行结果:
这样就实现了NavMesh导航网格寻路。
相关文章推荐
- Unity3D AssetBundle相关
- 制作子弹痕迹(到shareMaterial)-Unity
- [转]Unity3D新手引导开发手记
- unity语音聊天--亲加通讯云(Android/iOS)---ios
- unity语音聊天--亲加通讯云(Android/iOS)---android
- Unity 5.4 测试版本新特性---因吹丝停
- unity 3d实验屏幕坐标到世界坐标
- unity3D中 局部坐标,世界坐标以及屏幕坐标,transform变换坐标以及 变换方向心得
- unity 调用安卓系统摄像机和相册并对图片进行裁剪(二)
- [Unity实战]自定义mesh
- Unity之Mesh学习一
- Unity3d截图 指定相机截图
- Unity3d协程实现倒数计时
- Unity3d基础知识&面试题(重要)
- Unity AssetDatabase和Resources资源管理
- Unity 脚本 自动添加 脚本信息
- Unity3D中自带事件函数的执行顺序
- Unity3D编辑器插件编写
- unity3D 协程如何模拟Update
- JsonFX Unity3D 如何使用JsonFX