协程 onTriggerEnter

Couroutine onTriggerEnter

我正在开发一款类似于球类游戏的游戏,现在我有一些疑问,我想在输入触发器后激活一个事件,所以在我输入触发器后我应该等待 2 秒然后然后激活事件,事件就像改变相机,所以我将一个相机传递给 false,另一个传递给 true,之后我想再等 2 秒然后返回,我想要的是一些游戏必须的,当你按下一个按钮,门就会打开,所以其他摄像头会被激活以看到门打开,然后它会返回给玩家。

我试过了

public class button : MonoBehaviour {

    public GameObject elevator;
    private Camera second;
    void Start(){
        elevator = GameObject.Find("Elevator");
        second = GameObject.Find("EventCamera").GetComponent<Camera>();
    }


    IEnumerator WaitForSecs()
    {
        yield return new WaitForSeconds(2);
    }

    void OnTriggerEnter(Collider c)
    {
        if (c.gameObject.tag == "Player") {
            transform.localPosition = new Vector3(transform.localPosition.x, 0.08f, transform.localPosition.z);
            transform.GetComponent<Renderer>().material.color = Color.green;
            Camera.main.enabled = false;
            second.enabled = true;
            elevator.GetComponent<PingPong> ().enabled = true;
            Camera.main.enabled = true;
            second.enabled = false;

        }
    }
}

我的问题是我不太清楚在这种情况下如何实现协程,我知道如何在更新函数上实现,但这里感觉很奇怪,需要一些帮助。

谢谢

类似的问题已经问过好几次了。协程没那么复杂 ;)

 void OnTriggerEnter(Collider c)
{
    if (c.gameObject.tag == "Player") {
        transform.localPosition = new Vector3(transform.localPosition.x, 0.08f, transform.localPosition.z);
        GetComponent<Renderer>().material.color = Color.green;
        StartCoroutine( ShowDoor() ) ;
    }
}

IEnumerator ShowDoor()
{
    yield return new WaitForSeconds(2);
    Camera.main.enabled = false;
    second.enabled = true;
    elevator.GetComponent<PingPong> ().enabled = true;
    yield return new WaitForSeconds(2);
    Camera.main.enabled = true;
    second.enabled = false;
}