unity之自动寻径_第1页
unity之自动寻径_第2页
unity之自动寻径_第3页
unity之自动寻径_第4页
unity之自动寻径_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、自动寻径自动寻径MMO - Massively Multiplayer Online,大型多人在线。 策略类或战略类(MMOSLG) 动作类(MMOACT)。 冒险类(MMOAVG)。 模拟类游戏(MMOSG) 运动类(MMOSPT) 赛车类(MMORCG) 角色扮演类(MMORPG)现在的大部分mmo游戏都有了自动寻路功能。点击场景上的一个位置,角色就会自动寻路过去。中间可能会有很多的障碍物,角色会自动绕过障碍物,最终达到终点。使用Unity来开发手游,自动寻路可以有很多种实现方式。我们要实现一个功能:点击场景中的一个位置,角色可以自动寻路过去。角色会绕过各种复杂的障碍,找到一条理论上”最短

2、路径“。自动寻径1.创建地形2.添加角色3.创建多个障碍物,尽量摆的复杂一点,来检查Navmesh 的可用性和效率。4.选中地形,在Navigation窗口中,设置Navigation Static巨魔自动寻径5.依次选中障碍物,在avigation窗口中,设置Navigation Static6.Navigation窗口中,选择Bake(烘焙)界面,点击Bake按钮,进程场景烘焙,就可以烘焙出寻路网格了7.为角色添加NavMeshAgent组件。Component-Navigation-Nav Mesh Agent8.为角色新增一个脚本PlayerController.cs,实现点击目标,自

3、动寻路功能巨魔自动寻径private NavMeshAgent agent;private Animator anim;void Start() agent = GetComponent(); anim = GetComponent();void Update() RaycastHit hit;if (Input.GetMouseButtonDown(0) Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);if (Physics.Raycast(ray, out hit)agent.SetDestination(hit.po

4、int); 巨魔自动寻径/播放动画,判断是否到达了目的地,播放空闲或者跑步动画 if (agent.remainingDistance = 0) AnimationToIdle(); else AnimationToWalk(); public void AnimationToIdle()anim.SetFloat(idle, 1F);anim.SetFloat(walk, 0.0F);anim.SetFloat(run, 0F);巨魔自动寻径public void AnimationToWalk()anim.SetFloat(run, 0.0F);anim.SetFloat(idle, 0F

5、);anim.SetFloat(walk, 1.0F);巨魔自动寻径.角色身上的Nav Mesh Agent 组件Radius 半径: 代理的半径(仅用于寻路目的,可以跟实际对象的半径大小不一样,一般比实际对象的半径大)。Speed 速度: 代理可以周游世界,走向它的目的地的最大移动速度。巨魔自动寻径Acceleration 加速度: 最大加速度。Angular Speed 角速度: 最高转速(度/秒)。Stopping distance 制动距离:制动距离。到目的地的距离小于这个值,代理减速。Auto Traverse OffMesh Link 自动遍历OffMesh链接:自动移动并关闭Of

6、fMeshLinksAuto Repath 自动重新寻路:如果现有的部分已失效,获得新的路径Height 高度:代理的高度(用于调试图形)。Base offset 基本偏移:碰撞几何体相对于实际几何体垂直的偏移。Obstacle Avoidance Type 障碍躲避类型 :躲避的质量水平。NavMesh Walkable 导航网格行走:指定代理可以遍历的导航网格层类型。巨魔自动寻径宠物跟随 public Transform target;private NavMeshAgent agent;void Start () agent = GetComponent();void Update ()

7、 if (target!= null) agent.destination=target.position;把脚本给宠物,为宠物添加NavMeshAgent,target为巨魔宠物跟随Navmesh Obstacle之前我们都是用固定的物体作为障碍物,然后烘焙场景。Unity还提供了动态的障碍物。任何一个GameObject都可以添加Navmesh Obstacle组件,变成一个障碍物。具体步骤是Component-Navigation-Navmesh Obstacle.它有两个属性:半径和高度,可以设置跟你的物品差不多的体积大小。巨魔从高空跳下 1、设置Navigation里面Bake的Drop Height的值 2、勾选Navigation里面Object的OffMeshLink Generatic 3、Bake巨魔选择性的行走1、把Navigation里面Bake的Drop Height的值设为02、取消勾选Navigation里面Object的OffMeshLink Generatic3、Bake4、在Navigation里面Layers创建两个Layers(LayersUp LayersDown)-Bake5、选中巨魔,设置巨魔属性(NavMesh Walk

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论