yield return funktioniert nicht?

1 Antwort

Offensichtlich liegt das Skript auf dem Coin-Game Object. Wenn du das deaktivierst, stoppst du auch die weitere Ausführung der Coroutine.

Statt das Game Objekt explizit zu deaktivieren, würde es ausreichen, den Renderer zu deaktivieren.

private Renderer _renderer;

void Start()
{
  _renderer = GetComponent<Renderer>();
}

void OnCollisionEnter2D(Collision2D collisionObject)
{
  if (_renderer.enabled && collisionObject.gameObject.CompareTag("Player"))
  {
    StartCoroutine(RespawnCoin());
  }
}

IEnumerator RespawnCoin()
{
  _renderer.enabled = false;
  yield return new WaitForSecondsRealtime(2);
  _renderer.enabled = true;
}