Exemplo n.º 1
0
 public override void AttaquerZombie()
 {
     // Attaquer la cible si elle est dans le rayon d'attaque
     if (CalculerDistance(position, CiblePersonnage.Position) <= rayonAttaque)
     {
         if (prochaineAttaque <= 0)
         {
             CiblePersonnage.RecevoirDegats(force, this);
             prochaineAttaque = rythmeAttaque;
             SonFusil.Play();
         }
         AjusterRotation(CiblePersonnage.Position);
     }
     // Sinon, si le soldat est en état d'Alerte, se diriger vers la cible quand même
     else if (Alerte)
     {
         MouvementVersCible(CiblePersonnage.Position);
     }
     // Revenir à l'état Normal si aucun zombie à proximité et qu'il n'y a pas d'alerte
     else
     {
         etat            = new EtatNormal(this);
         SymboleEtat     = "N";
         CiblePersonnage = null;
     }
 }
Exemplo n.º 2
0
        public void Attaquer()
        {
            // Si le survivant que le zombie suivait est allé se caché, il ne le prend plus comme cible
            if (CiblePersonnage != null && CiblePersonnage.EstCache)
            {
                etat = new EtatNormal_Z(this);
                return;
            }


            if (prochaineAttaque <= 0)
            {
                // Si la cible est un survivant, il l'attaque
                // Sinon, il attaque le camp adverse
                if (CiblePersonnage != null)
                {
                    if (CalculerDistance(position, CiblePersonnage.Position) <= rayonAttaque)
                    {
                        CiblePersonnage.RecevoirDegats(force, this);
                        prochaineAttaque = rythmeAttaque;
                    }
                    else
                    {
                        MouvementVersCible(CiblePersonnage.Position);
                    }
                }
                else
                {
                    CampAdverse.InfligerDegats(force);
                    prochaineAttaque = rythmeAttaque;
                }
            }
        }
Exemplo n.º 3
0
 public override void AttaquerZombie()
 {
     if (CalculerDistance(position, CiblePersonnage.Position) <= rayonAttaque)
     {
         if (prochaineAttaque <= 0)
         {
             CiblePersonnage.RecevoirDegats(force, this);
             prochaineAttaque = rythmeAttaque;
             SonFusil.Play();
         }
         AjusterRotation(CiblePersonnage.Position);
     }
 }