Ejemplo n.º 1
0
    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);
        }
    }
Ejemplo n.º 2
0
        /// <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);
        }
Ejemplo n.º 3
0
    //  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);
            }
        }
    }
Ejemplo n.º 4
0
        /// <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("----------------");
            }
        }
Ejemplo n.º 5
0
        /// <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);
                }
            }
        }
Ejemplo n.º 6
0
    //  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();
            }
        }
    }
Ejemplo n.º 7
0
 /// <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);
 }
Ejemplo n.º 8
0
 public void AjouterPersonnage(Personnage unPersonnage)
 {
     Personnages.Add(unPersonnage);
     etatMajor.EnregistrerObservateur(unPersonnage);
 }