2013-05-26 6 views
0

Я пытаюсь использовать вспомогательную функцию, чтобы сделать паузу функции в течение нескольких секунд, но она не выполняет функцию ожидания.Использование вспомогательных функций внутри функций триггера

Вот код, который я использую:

Код:

public class Triggers : MonoBehaviour { 
    IEnumerator wait(float seconds) { 
     Debug.Log("In wait"); 
     yield return new WaitForSeconds(seconds); 
     Debug.Log("after wait"); 
    } 

    void OnTriggerEnter(Collider _collider) 
    { 
     Debug.Log("Destroy"); 
     gameObject.SetActive(false); 
     Debug.Log("Before wait"); 
     wait(5); 
     Debug.Log("activate"); 
     gameObject.SetActive(true); 
    } 
} 

Я оценил бы некоторую помощь.

ответ

2

Я решил ее просто отключив дочерний объект, который является фактическим «физический» объект, который я хотел скрыть от столкновения с невидимым родительский объект. Итак, родительский объект остается активным, подсчитывая время, а физический объект «Cube» появляется и появляется через n секунд.

public class Triggers : MonoBehaviour 
{ 
    IEnumerator wait (float seconds) 
    { 
     Debug.Log ("In wait"); 
     GameObject go = GameObject.Find ("Cube"); 
     go.SetActive(false); 
     yield return new WaitForSeconds(seconds); 
     Debug.Log ("after wait"); 
     go.SetActive (true); 
    } 

    void OnTriggerEnter (Collider _collider) 
    { 
     Debug.Log ("Destroy"); 
     Debug.Log ("Before wait"); 
     StartCoroutine (wait (5)); 
     Debug.Log ("activate"); 

    } 
+0

Молодцы. Спасибо за публикацию окончательного результата. ;-) –

0

Попробуйте это:

StartCoroutine(wait(5)); 

вместо просто "ждать (5)".

Это путь сопрограммы работать в C#, если я хорошо помню ...

+0

Это сообщение, в котором ошибка Coroutine не может быть запущена, потому что игровой объект неактивен. Любое другое решение? – Red

+0

Если это не делает то, что вы ожидали, вы можете попытаться присоединить сценарий к другому «Monobehaviour» в иерархии вашего объекта. –

+0

Что произойдет, если вы присоедините скрипт к пустой родительской «GameObject» и активируете/деактивируете свой «gameObject», который будет перемещен как дочерний элемент этого пустого объекта? –

Смежные вопросы