// Use to process your families. protected override void onProcess(int familiesUpdateCount) { foreach (GameObject go in _triggeredGO) { //Récupérer les élements qui peuvent être en collision Triggered2D t2d = go.GetComponent <Triggered2D> (); foreach (GameObject target in t2d.Targets) { Leucocyte leucocyte = go.GetComponent <Leucocyte> (); HP hp1 = target.GetComponent <HP>(); Absorbeur absorbe = target.GetComponent <Absorbeur> (); //Si l'élément n'est pas mort et que c'est un leucocyte et qu'il n'est pas un absorbeur if (hp1 != null && leucocyte != null && absorbe == null) { //on lui rajoute endommager Endommage endommage = go.GetComponent <Endommage> (); Debug.Log(hp1.hp); hp1.hp -= endommage.hpLost; /*if (hp1.hp <= 0) * GameObjectManager.destroyGameObject (target); */ } } } }
// Use to process your families. protected override void onProcess(int familiesUpdateCount) { //pour chaque élément absorbeur détecté foreach (GameObject go in _controllableGO) { Triggered2D t2d = go.GetComponent <Triggered2D> (); // Comme absorber diminue le HP on le récupére dans le fils de l'élément HP hp1 = go.gameObject.GetComponentInChildren <HP> (); //On récupére tous les élements en collision foreach (GameObject target in t2d.Targets) { //on vérifie que l'élément a côté n'a pas été déja absorbé IsAbsorbe isAbsorbe = target.GetComponent <IsAbsorbe> (); Absorbeur absorbeur = go.GetComponent <Absorbeur> (); // s'il est en train d'être absorbé if (isAbsorbe != null) { continue; } // si l'élement n'est pas encore été absorbé, si c'est une toxine if (target.gameObject.CompareTag("toxine")) { //on lui rajoute le compononent "isAbsorbe" target.AddComponent <IsAbsorbe>(); Debug.Log("Absorbe : toxine " + go); //on diminue le hp hp1.hp -= absorbeur.hpLost; } // si l'élement n'est pas encore été absorbé, si c'est une dechet else if (target.gameObject.CompareTag("dechet")) { Debug.Log("Absorbe : dechet " + go); target.AddComponent <IsAbsorbe>(); hp1.hp -= absorbeur.hpLost; } // si l'élement n'est pas encore été absorbé, si c'est une bacterie else if (target.gameObject.CompareTag("bacterie")) { Debug.Log("Absorbe"); target.AddComponent <IsAbsorbe>(); //target.gameObject.transform.GetChild(0).gameObject.AddComponent<IsAbsorbe>(); hp1.hp -= absorbeur.hpLost; } // si l'élement n'est pas encore été absorbé, si c'est un virus et qu'il n'est pas agglutiné else if (target.gameObject.CompareTag("virus") && target.GetComponent <Agglutinué>() != null) { Debug.Log("Absorbe"); target.AddComponent <IsAbsorbe>(); target.gameObject.transform.GetChild(0).gameObject.AddComponent <IsAbsorbe>(); hp1.hp -= absorbeur.hpLost; } } } }