大多数游戏中,可行进的场景区域往往是变化的,例如被破坏的路,桥登将不再允许通过,接下来介绍如何实现可改变通行状态的机关桥。
(1)打开Unity 依照上一节中的例子,烘培出一个场景如下:
可以发现,运动的Capsule可以延着桥到达目标target处,即使取消桥的Mesh Renderer的渲染,还是能够到达目标处
(2)现在我们给桥加上下面一段脚本
using UnityEngine; using System.Collections; public class BridgeControl : MonoBehaviour { public Transform movable = null; private float timer = 0.0f; // Use this for initialization void Start () { if (movable != null) { movable.GetComponent<NavMeshAgent>().areaMask &= ~0x8; GetComponent<Renderer>().enabled = false; } } // Update is called once per frame void Update () { if (GetComponent<Renderer>().enabled == false) { timer += Time.deltaTime; if (timer > 2.0f) { movable.GetComponent<NavMeshAgent>().areaMask |= 0x8; GetComponent<Renderer>().enabled = true; } } } }
并将运动对象Capsule拖到桥的脚本组件的Movable属性中去,如下图:
(3)运行游戏,我们会发现运动物体不能通过桥了,这是因为通过脚本控制了运动对象的Nav Mesh Agent组件中的Area Mask属性值
备注:0x8 是 User 3层的掩码值