我正在开发一款类似于滚球游戏的游戏,现在我有些疑惑,我想在输入触发后激活一个事件,所以在我输入触发后我应该等待2秒然后激活事件,事件就像更换相机,所以我将相机传递给假,另一个真实,之后我想再等待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;
}
}
}
我的问题是我不太清楚如何在这种情况下实现协同程序,我知道如何在更新函数上执行它,但是这里感觉很奇怪,需要一些帮助。
由于
答案 0 :(得分:2)
已多次提出类似问题。协同程序并不复杂;)
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;
}