Exemplo n.º 1
0
 private void VérifierÉtatBarreDeVie()
 {
     if (Monstre.Equals(this, ScèneJeu.GestionInput3D.GetSourisBoxIntercept(ScèneJeu.MonstManager.ListeMonstres)))
     {
         IndicateurVie.Visible = true;
     }
     else
     {
         IndicateurVie.Visible = false;
     }
 }
Exemplo n.º 2
0
        public bool CheckCollisionWithOtherPeople(ÊtreVivant etre, Vector3 oldPosition, Vector3 newPosition)
        {
            bool collision = false;

            List <BoundingBox> boxList = BuildBoundingBoxesWithOffset(oldPosition, newPosition, etre.BoxList);

            foreach (Monstre m in ScèneJeu.MonstManager.ListeMonstres)
            {
                if ((IsCollision(etre, m) && !Monstre.Equals(etre, m)) && (Vector2.Distance(m.PositionCoord, new Vector2(oldPosition.X, oldPosition.Z))
                                                                           > Vector2.Distance(m.PositionCoord, new Vector2(newPosition.X, newPosition.Z))))
                {
                    collision = true;

                    break;
                }
            }

            return(collision);
        }
Exemplo n.º 3
0
        protected virtual void GestionAttaque()
        {
            float distance = (Cible == null) ? AggroRange : (Vector2.Distance(Cible.PositionCoord, PositionCoord));

            if (Charmed && distance > CHARM_LEASH_DISTANCE)
            {
                float   distancetemp;
                Monstre cibletemp = null;
                foreach (Monstre m in ScèneJeu.MonstManager.ListeMonstres)
                {
                    if (!Monstre.Equals(m, this))
                    {
                        distancetemp = Vector2.Distance(PositionCoord, m.PositionCoord);
                        if (distancetemp < distance)
                        {
                            distance  = distancetemp;
                            cibletemp = m;
                        }
                    }
                }
                if (cibletemp != null)
                {
                    Vector2 vDirection = Vector2.Subtract(cibletemp.PositionCoord, PositionCoord);
                    vDirection = Vector2.Normalize(vDirection);
                    DébuterRotation(MathHelper.WrapAngle(vDirection.X == 0 ? MathHelper.PiOver2 * Math.Sign(-vDirection.Y) : ((float)Math.Atan(-vDirection.Y / vDirection.X) + (Math.Sign(vDirection.X) - 1) * MathHelper.Pi / 2)));

                    DébuterAttaque(cibletemp);
                }
            }
            else
            {
                if (Vector2.Distance(PositionCoord, Joueur.PositionCoord) < AggroRange)
                {
                    Vector2 vDirection = Vector2.Subtract(Joueur.PositionCoord, PositionCoord);
                    vDirection = Vector2.Normalize(vDirection);
                    DébuterRotation(MathHelper.WrapAngle(vDirection.X == 0 ? MathHelper.PiOver2 * Math.Sign(-vDirection.Y) : ((float)Math.Atan(-vDirection.Y / vDirection.X) + (Math.Sign(vDirection.X) - 1) * MathHelper.Pi / 2)));
                    DébuterAttaque(Joueur);
                }
            }
        }