UAC2015W102728SourceUAC2015W102728章节.pptxVIP

  • 1
  • 0
  • 约2.45千字
  • 约 16页
  • 2017-11-27 发布于广东
  • 举报
第27-28课 NavMesh进阶使用 —NavMesh课程名称 Lesson TitleNavMesh进阶使用学习者等级 Learner Level 专业能力认证课程模块 Module NavMesh本课时长 Duration 180分钟学习者背景 Learner Background本课程要求学习者熟悉Unity界面、学完应用能力认证课程基础阶段。教学目标 Objectives? 掌握Off-Mesh Link组件连接分离的可行径区域? 能为网格分层并能动态更改可行进层? 学会使用Navmesh Obstacle组件实现动态路障主题 Topics Off-Mesh Link 网格分层 Navmesh Obstacle组件实现动态路障Off-Mesh Link该组件用于手动指定通过行径路线来将分离网格连接。例如,游戏中通过上下爬梯子而达到另一块网格的情景。Off-Mesh Link?创建两个Cube,搭建一个简单的游戏场景,并烘焙导航网格?继续创建两个Cube,分别命名为start point和end point,作为导航的初始点以及结束点。然后分别放在两块网格中,如图所示的红色立方体,下方是start point,上方是end point。Off-Mesh Link?选中start point对象,依次打开菜单栏中的Component-Navigation-Off Mesh Link项,进而为该游戏对象添加Off Mesh Link组件。并设置属性。? Bake后即可看到连接关系路径。主题 Topics Off-Mesh Link 网格分层 Navmesh Obstacle组件实现动态路障网格分层?在Navigation-Layers下修改User Layer 0的Name为Brige1, User Layer 1的Name为Brige2。?选中中间的两个桥,在Navigation-Object下的Navigation Layer分别选Brige1和Brige2。? Bake后可看到不同层的导航网格会自动使用不同颜色表示。网格分层?选择胶囊体,修改Nav Mesh Agent组件的NavMesh Walkable属性,并取消Brige2项的勾选。?预览游戏,并观察结果,然后取消勾选Brige1,勾选Brige2,再次预览游戏。可以发现行进路径不一样。网格分层public class BridgeControl : MonoBehaviour { public Transform movable = null; private float timer = 0f; void Start () { if(movable != null) { movable.GetComponentNavMeshAgent().walkableMask = ~0x8; renderer.enabled = false; } } void Update () { if(renderer.enabled == false) { timer += Time.deltaTime; if(timer 2.0f) { movable.GetComponentNavMeshAgent().walkableMask |= 0x8; renderer.enabled = true; } } }}动态更改可行进层0x8是User Layer 0的掩码值。主题 Topics Off-Mesh Link 网格分层 Navmesh Obstacle组件实现动态路障Navmesh Obstacle组件实现动态路障?考虑一个游戏场景中包含很多的桥的情形,每个桥都有自己的通行或禁止状态,那么就需要为每一个桥分一个层,这样一来层数肯定是不够用的,因为在Unity中最多只能分32层。其次,在行进物体很多的时候频繁改动行进物体的可行进层也不时一件轻松的事情。? Unity4.0以后带来一个很好的解决方案,用于处理类似动态路障的问题,那便是Navmesh Obstacle组件。将该组件挂载到动态路障上,行进物体将会在寻路时躲避这些路障。?对比之前的示例,用户不需要手动改变行进物体的可行进层,只需要在桥体上挂载Navmesh Obstacle组件,然后手动改变Navmesh Obstacle组件的enable的值即可。?在桥对象可通行时,enable为false,桥面不可通行时enable为true。Navmesh Obstacle组件实现动态路障通过调整Nav Mesh Obstacle组件下的Radius和Height参数来改变包围柱的大小。Navmesh Obstacle组件实现动态路障添加此脚本后预览游戏,即可看到与修改可行进层类似的结果。然而两种方式之间不同的地

文档评论(0)

1亿VIP精品文档

相关文档