【发布时间】:2015-12-21 04:54:50
【问题描述】:
基本上我有一个门触发事件,如果玩家按下开关,门就会打开。但是,我希望这样做,以便如果相关的门需要两个开关才能很好地打开……那么它只有在按下两个开关时才会打开。这是我的 InteractSwitch 代码
public class InteractSwitch : MonoBehaviour
{
Animator animator;
public DoorEventTrigger[] doorTriggers;
public bool pressed;
private bool down;
// Use this for initialization
void Start ()
{
animator = GetComponent <Animator> ();
}
// Update is called once per frame
void Update ()
{
}
void OnCollisionEnter2D (Collision2D target)
{
if (target.gameObject.tag == "Player") {
down = true;
animator.SetInteger ("SwitchTrig", 1);
foreach (DoorEventTrigger trigger in doorTriggers)
if (trigger != null)
trigger.Toggle (true);
}
}
当触发此事件时,检查玩家,显示开关已被按下,然后发送一个布尔值到一个名为 Toggle 的函数,该函数处理门的操作。
接下来我有我的 DoorEventTrigger 事件,它检查 bool sent = true。如果是,那么门就会打开。这是我卡住的地方。从代码中可以看出,我创建了一个 InteractSwitch 数组,其中存储了我希望玩家在门打开之前按下的开关数量。然后我声明如果长度 > 1,那么这个 if 条件为真,并且会在此处添加一些代码,只有当玩家选择了 InteractSwitch[].length 开关时才会打开门。我的问题是如何检查此 DoorEventTrigger 的所有 InteractSwitch 实例是否等于 true?
这是我的 DoorEventTrigger 代码
public void Toggle (bool val)
{
if (switchTriggers.Length > 1) {
Debug.Log ("HAS THIS ACTUALLY DONE ANYTHING");
door.Open ();
}
else
{
if (val)
door.Open ();
else
door.Close ();
}
}
}
【问题讨论】: