协程 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;
}
我正在开发一款类似于球类游戏的游戏,现在我有一些疑问,我想在输入触发器后激活一个事件,所以在我输入触发器后我应该等待 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;
}