Unity-导航寻路-OffMeshLink
2018-03-03 16:58
141 查看
在3D游戏中,有时,场景中的静态几何体的导航网格不是全部相连在一起的,从而使代理不能从世界场景的这一部分移动到另外的部分,此时需要运用到Off-MeshLink来解决此类问题。
2.把inv环境中的Cube物体设置为静态,并勾选OffMeshLink Generation选项。如图 所示。
3.为start point添加Off Mesh Link组件。并把start point和end point拖放指定到Start和End属性中。如图 所示。
4.为主角胶囊体添加Nav Mesh Agent组件。如图 所示。
5.Bake烘焙场景。注意调节Height、Drop Height、Jump Distance属性。
6.烘焙好后,场景如图 所显示。
7.为主角胶囊体添加脚本,如下所示。
案例
Off-MeshLink组件用于手动指定路径线路。可以实现跨越鸿沟或者往高处跳跃而上的效果。1.创建场景。如图 所示。inv对象中有2个Cube,分别代表地板和大方块高墙。再创建2个Cube,分别命名为:start point和end point,分别为指定跳跃起点和指定跳跃终点位置点。使用胶囊体创建主角。2.把inv环境中的Cube物体设置为静态,并勾选OffMeshLink Generation选项。如图 所示。
3.为start point添加Off Mesh Link组件。并把start point和end point拖放指定到Start和End属性中。如图 所示。
4.为主角胶囊体添加Nav Mesh Agent组件。如图 所示。
5.Bake烘焙场景。注意调节Height、Drop Height、Jump Distance属性。
6.烘焙好后,场景如图 所显示。
7.为主角胶囊体添加脚本,如下所示。
using UnityEngine; using System.Collections; public class PlayerController1 : MonoBehaviour { private NavMeshAgent agent; GameObject target; void Start() { //获取组件 agent = GetComponent<NavMeshAgent>(); target = GameObject.Find("end point"); } void Update() { agent.SetDestination(target.transform.position); }
自定义移动过程
假如各位需要对越过OffMeshLink时候进行自己的控制,是需要另外写脚本的。我这里简单的介绍一下方法,有兴趣的朋友可以自己试试。首先各位最好有用状态来控制角色的概念。比如人物可以分为站立、走路、跑步、上下楼梯、横向跳跃和往下掉落几种状态,针对NavMesh来说,人物简单的可以分为站立、正常的NavMesh寻路,和通过OffMeshLink移动几种状态。先把 NavMesh Agent组件上的Auto Traverse Off Mesh Link选项取消。然后,当人物在通过OffMeshLink移动的状态(可以用NavMeshAgent.isOnOffMeshLink来判断),获取到当前通过的OffMeshLink:OffMeshLinkData link = NavMeshAgent.currentOffMeshLinkData;这样你就能获取到link的开始点和结束点的坐标(link.startPos和link.endPos),这时候你的人物就可以用最简单的Vector3.Lerp来进行移动,当人物的位移到达了结束点的坐标,人物的OffMeshLink移动状态就可以结束,又重新变回正常寻路或者站立的状态了。在这个Vector3.Lerp的过程中,你可以随意的控制人物的爬行或者跳跃的动作。相关文章推荐
- unity5之导航网格寻路系统-4Nav Mesh Obstacle(导航障碍物)
- Unity 导航寻路-Off-MeshLink
- Navmesh OffMeshLink 寻路
- 【Unity】12.3 Off Mesh Link组件
- unity, SkinnedMeshRenderer.updateWhenOffscreen
- 控制寻路OffMashLink组件移动过程
- unity自带的导航构建一个简单的地图寻路
- Unity 用户手册用户指南导航网格 (Navmesh) 和寻路 (Pathfinding)
- Unity -- 导航寻路系统
- Unity之 - 导航网格寻路
- Unity-导航网络寻路-基础寻路
- 关于Unity中网格导航与寻路
- unity5之导航网格寻路系统-2使用NavMeshAgent实现类型英雄联盟右键行走功能
- 【Unity】第12章 导航网格和寻路
- Unity寻路导航相关组件
- 【Unity】12.2 导航网格寻路简单示例
- Unity专题_简单的寻路导航
- [Unity3D]A*算法、导航网格、路径点寻路对比(A-Star VS NavMesh VS WayPoint)
- Unity Mesh
- NAV导航网格寻路(6) -- 寻路实现