• » Jeux Vidéo
  • » Toi aussi deviens indéveloppeur [Unity/UE4 pour platformers 2D osef]
hichlibedis
hichanbis

Binouz, HEEEEELLLLLPPPPP!:

nbCoroutines = battleAction.targets.Count;
foreach (GameObject target in battleAction.targets.ToList())
    {  
      //nbCoroutines décrémenté à chaque fin d'exec de coroutine TakeDamage
      StartCoroutine(target.GetComponent<BattleScript>().TakeDamage(dmg)); 
    }

   //c'est sensé attendre la fin de toutes les coroutines
    while (nbCoroutines > 0)
      {
          yield return null;
      }

Debug.Log("end wait");

foreach (GameObject target in battleAction.targets.ToList())
    {
    target.GetComponent<BattleScript>().DestroyIfDead();
    }

La méthode DestroyIfDead est exécutée avant le log "end wait". Du coup ben ça détruit l'objet avant la fin de la coroutine TakeDamage (qui attend la fin de l'animation d'impact/mort).
... WHY ?? smiley101

Avant ça je faisais yield return StartCoroutine(TakeDamage(dmg)) du coup ça temporisait bien mais ça faisait tout séquentiellement, y compris le destroy.
Alors que là je veux que mes unités encaissent les dégats en même temps et se détruisent toutes ensuite.
HEEELLLPPP

hichanbis (12 Jun 2017)