Exemple #1
0
        public void Suivre(Unite unite)
        {
            List <Unite> liste = new List <Unite> {
            };
            double distance    = Outil.DistanceUnites(this, unite);
            bool   ok          = distance > Portee * Map.TailleTiles.X;

            if (ok)
            {
                foreach (Unite u in Map.unites)
                {
                    if (Outil.DistanceUnites(this, u) <= 1 * Map.TailleTiles.X)
                    {
                        if (u != unite && u != this)
                        {
                            liste.Add(u);
                        }
                    }
                }

                suivreactuel = 0;
                List <Noeud> chemin = PathFinding.TrouverChemin(PositionTile, unite.PositionTile, Map.Taille, liste, Map.unitesStatic, false);
                if (chemin != null)
                {
                    ObjectifListe = chemin;
                    ObjectifListe.RemoveAt(0);
                }
                else
                {
                    ObjectifListe.Clear();
                    body.LinearVelocity = Vector2.Zero;
                }
            }
            else
            {
                suivreactuel++;
            }
        }
Exemple #2
0
        public virtual void Deplacer()
        {
            if (ObjectifListe.Count > 0)
            {  // Bug, je sais pas pourquoi
                // body.Position = ConvertUnits.ToSimUnits(new Vector2((float)Math.Round(ConvertUnits.ToDisplayUnits(body.Position.X)), (float)Math.Round(ConvertUnits.ToDisplayUnits(body.Position.Y) )));
                // HAUT GAUCHE
                if (PositionTile.X > ObjectifListe[0].Position.X && PositionTile.Y > ObjectifListe[0].Position.Y)
                {
                    body.LinearVelocity = new Vector2(-Vitesse / 1.41f, -Vitesse / 1.41f) * Map.gametime.ElapsedGameTime.Milliseconds;
                    FlipH = true;

                    if (direction != Direction.HautGauche || Animation.Count == 0)
                    {
                        Animation = packAnimation.HautDroite();
                    }
                    direction = Direction.HautGauche;
                }
                // HAUT DROITE
                else if (PositionTile.X < ObjectifListe[0].Position.X && PositionTile.Y > ObjectifListe[0].Position.Y)
                {
                    body.LinearVelocity = new Vector2(Vitesse / 1.41f, -Vitesse / 1.41f) * Map.gametime.ElapsedGameTime.Milliseconds;
                    FlipH = false;

                    if (direction != Direction.HautDroite || Animation.Count == 0)
                    {
                        Animation = packAnimation.HautDroite();
                    }
                    direction = Direction.HautDroite;
                }
                // BAS DROITE
                else if (PositionTile.X < ObjectifListe[0].Position.X && PositionTile.Y < ObjectifListe[0].Position.Y)
                {
                    body.LinearVelocity = new Vector2(Vitesse / 1.41f, Vitesse / 1.41f) * Map.gametime.ElapsedGameTime.Milliseconds;
                    FlipH = false;

                    if (direction != Direction.BasDroite || Animation.Count == 0)
                    {
                        Animation = packAnimation.BasDroite();
                    }
                    direction = Direction.BasDroite;
                }
                // BAS GAUCHE
                else if (PositionTile.X > ObjectifListe[0].Position.X && PositionTile.Y < ObjectifListe[0].Position.Y)
                {
                    body.LinearVelocity = new Vector2(-Vitesse / 1.41f, Vitesse / 1.41f) * Map.gametime.ElapsedGameTime.Milliseconds;
                    FlipH = true;

                    if (direction != Direction.BasGauche || Animation.Count == 0)
                    {
                        Animation = packAnimation.BasDroite();
                    }
                    direction = Direction.BasGauche;
                }
                // GAUCHE
                else if (PositionTile.X > ObjectifListe[0].Position.X)
                {
                    body.LinearVelocity = new Vector2(-Vitesse, 0) * Map.gametime.ElapsedGameTime.Milliseconds;
                    FlipH = true;

                    if (direction != Direction.Gauche || Animation.Count == 0)
                    {
                        Animation = packAnimation.Droite();
                    }
                    direction = Direction.Gauche;
                }
                // DROITE
                else if (PositionTile.X < ObjectifListe[0].Position.X)
                {
                    body.LinearVelocity = new Vector2(Vitesse, 0) * Map.gametime.ElapsedGameTime.Milliseconds;
                    FlipH = false;

                    if (direction != Direction.Droite || Animation.Count == 0)
                    {
                        Animation = packAnimation.Droite();
                    }
                    direction = Direction.Droite;
                }
                // HAUT
                else if (PositionTile.Y > ObjectifListe[0].Position.Y)
                {
                    body.LinearVelocity = new Vector2(0, -Vitesse) * Map.gametime.ElapsedGameTime.Milliseconds;
                    FlipH = false;

                    if (direction != Direction.Haut || Animation.Count == 0)
                    {
                        Animation = packAnimation.Haut();
                    }
                    direction = Direction.Haut;
                }
                // BAS
                else if (PositionTile.Y < ObjectifListe[0].Position.Y)
                {
                    body.LinearVelocity = new Vector2(0, Vitesse) * Map.gametime.ElapsedGameTime.Milliseconds;
                    FlipH = false;

                    if (direction != Direction.Bas || Animation.Count == 0)
                    {
                        Animation = packAnimation.Bas();
                    }
                    direction = Direction.Bas;
                }
                else
                {
                    ObjectifListe.RemoveAt(0);
                }
            }
            else
            {
                body.LinearVelocity *= 0.01f;
            }
        }