protected virtual void OnTriggerEnter2D(Collider2D other) { GameObject go = other.gameObject; if (noHit != (noHit | (1 << go.layer))) { /*if(go.layer == 15) * { * Debug.Log("Ricoche dans trigger"); * return; * }*/ //if (statAttaque.ePower == 0 || statAttaque.eRadius == 0) { if (dommageHit == (dommageHit | (1 << go.gameObject.layer))) { Personnages en = go.GetComponent <Personnages>() as Personnages; en.DommagePerso(dmg); } //}else if if (myTransform != null) { Collider2D[] colliders = Physics2D.OverlapCircleAll(myTransform.position, statAttaque.eRadius, dommageHit); foreach (Collider2D nerbyObject in colliders) { if (dommageHit == (dommageHit | (1 << nerbyObject.gameObject.layer))) { if (Rigidbody2DExt.AddExplosionForce(nerbyObject.GetComponent <Rigidbody2D>(), statAttaque.ePower, myTransform.position, statAttaque.eRadius, statAttaque.upwardsModifier)) { // if (nerbyObject == other) // continue; Personnages en = nerbyObject.GetComponent <Personnages>() as Personnages; en.DommagePerso(dmg); } } } if (effetExplosion != null && statAttaque.eRadius != 0) { Transform clone = Instantiate(effetExplosion, myTransform.position, myTransform.rotation) as Transform; ShockWaveForce wave = clone.GetComponent <ShockWaveForce>(); wave.radius = statAttaque.eRadius * 1.3f; Destroy(clone.gameObject, 1f); } } if (effetContact != null && myTransform != null) { Transform clone = Instantiate(effetContact, myTransform.position, myTransform.rotation) as Transform; Destroy(clone.gameObject, 1f); } Destroy(gameObject); } }
/// <summary> /// Ecrit les messages relatifs au combat dans la console /// </summary> /// <param name="personnage">Personnage effectuant l'attaque</param> /// <param name="entite">Entité subissant les dommages</param> public void LogDeCombat(Personnages personnage, Entite entite) { string messageDegats = "Le " + entite.Nom + " " + entite.Identifiant + " a subit " + personnage.Degats + " de dégat du " + personnage.Nom + " " + personnage.Identifiant; string messageVie = "Il reste " + entite.VieActuelle + " point de vie a l'entite " + entite.Nom + " " + entite.Identifiant; Console.WriteLine(messageDegats); Console.WriteLine(messageVie); }
// si le joueur est détecter, l'écrase et lui fait des DMG private void OnTriggerEnter2D(Collider2D collision) { if (collision.tag == "Player") { GameObject coll = collision.gameObject; if (dommageHit == (dommageHit | (1 << coll.layer))) { Personnages en = coll.GetComponent <Personnages>() as Personnages; en.DommagePerso(m_dmg); } } }
/// <summary> /// Retire le personnage ayant été tué. /// Ecrit dans le console le message concernant la mort du personnage /// Si tous les personnages ont été tués, un message est écrit en console. /// </summary> /// <param name="personnage">Personnage tué.</param> /// <param name="numero">Numéro dans la liste du personnage.</param> public void Mort(List <Personnages> personnage, int numero) { Personnages perso = personnage.ElementAt(numero); personnage.RemoveAt(numero); Console.WriteLine("Le " + perso.Nom + " " + perso.Identifiant + " a été tué."); Console.WriteLine("----------------"); if (personnage.Count == 0) { Console.WriteLine("Tout les " + perso.Nom + "s ont été tué."); Console.WriteLine("----------------"); } }
/// <summary> /// L'attaquant attaque une cible selectionné aléatoirement. /// Si l'attaquant est un humain, il montra de niveau si la cible meurt. /// </summary> /// <param name="attaquant">Personnage effectuant l'attaque</param> /// <param name="EquipeAttaquee">Equipe subissant l'attaque</param> public void PhaseAttaque(Personnages attaquant, List <Personnages> EquipeAttaquee) { Random rnd = new Random(); int numPersonnage = rnd.Next(0, EquipeAttaquee.Count); Personnages victime = EquipeAttaquee.ElementAt(numPersonnage); if (attaquant.AttaqueRestantes > 0) { PersonnagesAttaque(attaquant, victime); LogDeCombat(attaquant, victime); if (!victime.IsVivant) { if (attaquant.Nom == "Soldat") { Soldat soldat = (Soldat)attaquant; soldat.LevelUp(); } Mort(EquipeAttaquee, numPersonnage); } } }
// si le joueur est détecter, l'écrase et lui fait des DMG private void OnTriggerEnter2D(Collider2D collision) { if (collision.tag == "Player") { GameObject coll = collision.gameObject; if (m_getScale == false) { m_ScaleY = coll.transform.lossyScale.y; m_getScale = true; } if (dommageHit == (dommageHit | (1 << coll.layer))) { Personnages en = coll.GetComponent <Personnages>() as Personnages; en.DommagePerso(m_dmg); } if (m_descend == false) { // désactive les controle PlayerCharacter2D p = coll.GetComponent <PlayerCharacter2D>(); Rigidbody2D rbp = coll.GetComponent <Rigidbody2D>() as Rigidbody2D; rbp.collisionDetectionMode = CollisionDetectionMode2D.Discrete; if (p) { p.setEnableInput(false); } // rapetisse le joueur Sequence ecrase = DOTween.Sequence(); ecrase.Append(coll.transform.DOScaleY(1.0f, 0.2f)); ecrase.Insert(0.0f, coll.transform.DOMoveY(coll.transform.position.y - 0.4f, 0.2f)); ecrase.Play(); } } }
/// <summary> /// Effectue l'attaque d'un personnage sur une entité. /// </summary> /// <param name="personnages"> Personnage effectuant l'attaque </param> /// <param name="entite"> Entite recevant les dommages</param> public void PersonnagesAttaque(Personnages personnages, Entite entite) { personnages.Attaque(); entite.SubitDegats(personnages.Degats); }
public void AjouterPersonnage(Personnage unPersonnage) { Personnages.Add(unPersonnage); etatMajor.EnregistrerObservateur(unPersonnage); }