// 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; } } } }
// Use to process your families. protected override void onProcess(int familiesUpdateCount) { foreach (GameObject go in _triggeredGO) { bool tokill = false; //On vérifie tous les cas ou on peut mourrir, soit un infection par un virus etc... Infecteur virusC = go.GetComponent <Infecteur> (); HP hp1 = go.gameObject.GetComponentInChildren <HP> (); IsApoptose isApoptose = go.GetComponent <IsApoptose>(); IsAbsorbe isAbsorbe = go.GetComponent <IsAbsorbe> (); IsInfecte infecte = go.GetComponent <IsInfecte> (); Leucocyte leucocyte = go.GetComponent <Leucocyte> (); Secreter secreter = go.GetComponent <Secreter> (); if (virusC != null && virusC.hasInfect) // mort des virus une fois qu'ils ont infecté qlqu'un { Debug.Log("MORT : virus a infecté " + go); tokill = true; //GameObjectManager.destroyGameObject (go); } if (hp1 != null && hp1.hp <= 0) // mort de toute entitées quand elle a plus d'HP { Debug.Log("MORT : plus d'hp " + go); tokill = true; //GameObjectManager.destroyGameObject (go); } if (isApoptose != null) // MORT APOPTOSE { Debug.Log("MORT : apoptose " + go); tokill = true; //GameObjectManager.destroyGameObject (go); } if (isAbsorbe != null) // MORT absorbé { Debug.Log("MORT : absorbé " + go); tokill = true; //GameObjectManager.destroyGameObject (go); } if (leucocyte != null && tokill) { bound = go.GetComponent <Renderer>().bounds; for (int i = 0; i < 3; i++) { float x = Random.Range(bound.min.x - 0.5f, bound.max.x + 0.5f); float y = Random.Range(bound.min.y - 0.5f, bound.max.y + 0.5f); float z = 0.0f; Vector3 toxPosition = new Vector3(x, y, z); vir = GameObjectManager.instantiatePrefab("Dechet"); vir.transform.position = toxPosition; } } if (secreter != null && tokill) { bound = go.GetComponent <Renderer>().bounds; float x = Random.Range(bound.max.x, bound.max.x + 0.5f); float y = Random.Range(bound.max.y, bound.max.y + 0.5f); float z = 0.0f; Vector3 toxPosition = new Vector3(x, y, z); vir = GameObjectManager.instantiatePrefab("Dechet"); //vir.transform.position = toxPosition; } if (infecte != null && isAbsorbe == null && isApoptose == null && tokill) { Debug.Log("dlibere VIrus : absorbé " + go); bound = go.GetComponent <Renderer>().bounds; for (int i = 0; i < 5; i++) { float x = Random.Range(bound.min.x, bound.max.x); float y = Random.Range(bound.min.y, bound.max.y); float z = 0.0f; Vector3 toxPosition = new Vector3(x, y, z); vir = GameObjectManager.instantiatePrefab("Virus"); vir.transform.position = toxPosition; } } if (tokill) { //if(go.gameObject.transform.parent.gameObject) // GameObjectManager.destroyGameObject (go.gameObject.transform.parent.gameObject); //else GameObjectManager.destroyGameObject(go); } } }