大多数游戏中,可行进的场景区域往往是变化的,例如被破坏的路,桥登将不再允许通过,接下来介绍如何实现可改变通行状态的机关桥。

(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层的掩码值