Exemple #1
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;
                }
            }
        }
Exemple #2
0
        public virtual void Update()
        {
            prochaineAttaque--;
            DistanceAvecCampSurvivants = CalculerDistance(position, CampAdverse.Cible);


            if (CiblePersonnage != null)
            {
                // Si le zombie a tué sa cible ou ne la détecte plus, il continue à se diriger vers le camp adverse
                if (CiblePersonnage.PointsdeVie <= 0 || CalculerDistance(position, CiblePersonnage.Position) >= rayonDetection)
                {
                    etat = new EtatNormal_Z(this);
                }
            }
            else
            {
                // Si le zombie n'a pas de cible, il essaie d'en trouver une nouvelle
                Acteur nouvelleCible = TrouverEnnemisAProximite();
                if (nouvelleCible != null)
                {
                    CiblePersonnage = nouvelleCible;
                    etat            = new EtatOffensif_Z(this);
                }
            }

            // Si le zombie a été touché, il clignote rouge
            if (touche)
            {
                cptFlash++;
            }
            if (cptFlash >= tempsFlashRouge)
            {
                cptFlash = 0;
                couleur  = Color.White;
            }


            etat.OnUpdate();
        }
Exemple #3
0
 public Zombie(Texture2D image, Vector2 positionDepart, float rotation, Vector2 limiteHautGauche, Vector2 limiteBasDroite, int vie, float vitesse, int force, Acteur cible, Camp campAdverse, SpriteBatch batch, SpriteFont font) :
     base(image, positionDepart, rotation, limiteHautGauche, limiteBasDroite, vie, vitesse, force, cible, campAdverse, batch, font)
 {
     etat = new EtatNormal_Z(this);
 }