Unity 自动寻路
2015-07-03 16:17
453 查看
Unity 自动寻路
利用Unity自带的导航网格寻路,Unity5.0.1 版, 与Unity4.X 版有少许区别。
(1)创建地形
(2)设置
选择 Terrain 在Inapector 面板
(3)查看烘焙参数(Unity5以上的版本会自动烘焙,根据需求可以设置一些参数)
Window -> Lighting
(4)设置 Navigation, Window -> Navigation
点击 Back 即可
效果如下
(5)创建一个 Sphere 作为 寻路者,添加 NavMeshAgent 组件
上面参数想仔细了解的查 API
(6)创建脚本
将脚本拖到 Sphere 上,运行,在地形上随便点击,Sphere 自动寻找路线移动过去
(7)设置障碍。在做地形时可以做一些障碍物等不能通过的地方,但是在游戏中会有动态障碍物的需求,比如游戏中建造一个墙,肯定就不允许通过,游戏中又不能重新烘焙场景,下面说下动态添加障碍物的方法
创建一个 Cube作为墙使用,添加 NavMeshObstacle 组件
给Cube添加组件
在此运行,点击墙对面的地面,球将绕过墙走到点击位置
NavMeshAgent 、NavMeshObstacle 组件有很多参数可以利用代码设置,在此只是演示基本用法,如有需求,请查阅Unity API
利用Unity自带的导航网格寻路,Unity5.0.1 版, 与Unity4.X 版有少许区别。
(1)创建地形
(2)设置
选择 Terrain 在Inapector 面板
(3)查看烘焙参数(Unity5以上的版本会自动烘焙,根据需求可以设置一些参数)
Window -> Lighting
(4)设置 Navigation, Window -> Navigation
点击 Back 即可
效果如下
(5)创建一个 Sphere 作为 寻路者,添加 NavMeshAgent 组件
上面参数想仔细了解的查 API
(6)创建脚本
using UnityEngine; using System.Collections; public class Agent : MonoBehaviour { private NavMeshAgent _agent; // Use this for initialization void Start () { //获取寻路组件 _agent = GetComponent<NavMeshAgent>(); } // Update is called once per frame void Update () { if (_agent == null) return; if (Input.GetMouseButtonDown(0)) { //创建一条摄像机向鼠标点击位置的射线 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit)) { //点击位置坐标 Vector3 point = hit.point; //设置寻路目标 _agent.SetDestination(point); } } } }
将脚本拖到 Sphere 上,运行,在地形上随便点击,Sphere 自动寻找路线移动过去
(7)设置障碍。在做地形时可以做一些障碍物等不能通过的地方,但是在游戏中会有动态障碍物的需求,比如游戏中建造一个墙,肯定就不允许通过,游戏中又不能重新烘焙场景,下面说下动态添加障碍物的方法
创建一个 Cube作为墙使用,添加 NavMeshObstacle 组件
给Cube添加组件
在此运行,点击墙对面的地面,球将绕过墙走到点击位置
NavMeshAgent 、NavMeshObstacle 组件有很多参数可以利用代码设置,在此只是演示基本用法,如有需求,请查阅Unity API
相关文章推荐
- unity的c#脚本gameObject.SendMessage(string,Object)怎么用求举例
- unity在Windows下的安装
- Unity中Shader的个人理解
- [Mark Unity]MonoBehavior里面基本函数调用
- Unity3D 射线指定层获取GameObject 注意
- UBUNTU 14.04 在 vmware workstation10下无法进入unity模式
- unity中IOS和Android真机Profiler
- unity3D项目中如何避免硬代码(C#)
- [Unity3D]Script 脚本所有编译器属性详解
- A星寻路算法在unity3d中的实现与简单应用
- Unity3D 获得GameObjectHierarchy 中的全路径
- Unity3D中如何访问数据库
- 浅尝Unity 3D的Asset Bundle知识(二)-----打包基础篇
- Unity ----- 对象池GameObjectPool
- Android与Unity交互研究
- Unity3D之FingerGestures学习
- Unity3D之FingerGestures使用
- Android与Unity交互研究
- Unity3D 导出的apk进行混淆和加固(防止反编译)
- Unity3d插件研究之Easytouch