Я работаю над игрой, похожей на игру с мячом, и теперь у меня есть некоторые сомнения, я хочу активировать событие после ввода триггера, поэтому после того, как я вхожу в свой триггер, я должен ждать как 2 секунды и затем активируйте событие, событие похоже на изменение камер, поэтому я передаю камеру в false, а другой - в true, после чего я хочу подождать еще 2 секунды и вернуться назад, что я хочу, это то, что некоторые игры должны, когда вы нажмите кнопку, откроется дверь, поэтому другая камера активирована, чтобы открыть дверь, а затем она возвращается к плееру.Couroutine onTriggerEnter
Я попытался это
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;
}
}
}
Моя проблема заключается в том, что я не очень хорошо знаю, как реализовать сопрограмму в этом случае, я знаю, как это сделать на функцию обновления, но здесь чувствует странно, нужна помощь.
Thanks
Небольшая заметка: Хорошая практика заключается в создании только одного 'WaitForSeconds' и повторного использования, потому что для его создания регулярно требуются ресурсы. – Hellium
hmmm Как я могу его повторно использовать? im новичок хочет учиться: D –
Другая вещь, я получаю nullreferenceexception, когда я делаю последние 2 строки, я думаю, что это имеет какое-то отношение к Camera.main.enabled, –