大多数游戏中,可行进的场景区域往往是变化的,例如被破坏的路,桥登将不再允许通过,接下来介绍如何实现可改变通行状态的机关桥。
(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层的掩码值
浙公网安备 33010602011771号