Beispiel #1
0
        void CréerUneCourse(int nbTours, int piste)
        {
            CaméraMobile = false;
            //CourseActive = true;

            PositionUtilisateur  = 1;
            IDVoitureUtilisateur = 0;
            NbTours = 1;
            Piste   = piste;
            if (Piste == 0)
            {
                //Carte = new Terrain(this, 1f, Vector3.Zero, new Vector3(0, -1258 / 2f, 0), new Vector3(25600 / 2f, 1000 / 2f, 25600 / 2f), "CarteTest3", "grass", 5, INTERVALLE_MAJ_STANDARD, CaméraJeu);
                //Carte = new LeTerrain(this, 1f, Vector3.Zero, new Vector3(0, -1285 / 2f, 0), new Vector3(25600 / 2f, 1000 / 2f, 25600 / 2f), "CarteTest3", "DétailsTerrain2", 5, INTERVALLE_MAJ_STANDARD);
                Carte = new LeTerrain2(this, 1f, Vector3.Zero, new Vector3(0, -630, 0), new Vector3(25600 / 2f, 1000 / 2f, 25600 / 2f), "Canyon2", "DétailsTerrain2", 7, INTERVALLE_MAJ_STANDARD);
            }
            LaPiste = new List <Sol>();

            ListeVoiture = new List <Voiture>();
            Mustang      = new Voiture(this, "MustangGT500SansRoue", 0.0088f, new Vector3(0, 0, 0), new Vector3(-1875, 0, 1100), INTERVALLE_MAJ_STANDARD, true, true);
            AI           = new Voiture(this, "MustangGT500SansRoue", 0.0088f, new Vector3(0, 0, 0), new Vector3(-1915, 0, 1100), INTERVALLE_MAJ_STANDARD, false, true);
            ListeVoiture.Add(Mustang);
            ListeVoiture.Add(AI);
            NbVoiture = ListeVoiture.Count();

            TempsÉcouléDepuisMAJ = 0;

            Components.Add(new Afficheur3D(this));
            Components.Add(new AfficheurFPS(this, INTERVALLE_CALCUL_FPS));
            Components.Add(Carte);

            LaCourse = new Course(this, NbTours, NbVoiture, LaPiste, ListeVoiture, CaméraJeu, INTERVALLE_MAJ_STANDARD, Piste, ModeDeJeu);
            LaCourse.CréationPiste();
            foreach (Sol x in LaCourse.LaPiste)
            {
                Components.Add(x);
            }

            foreach (Voiture x in ListeVoiture)
            {
                Components.Add(x);
            }

            Components.Add(LaCourse);

            //Interface = new GUI(this, INTERVALLE_MAJ_STANDARD, "aiguille2", "speedometer3", LaCourse.NbVoiture, LaCourse.NbTours, IDVoitureUtilisateur, new Vector2(Window.ClientBounds.Width, Window.ClientBounds.Height), ModeDeJeu);
            //Components.Add(Interface);

            //Services.AddService(typeof(GUI), Interface);
            //Services.AddService(typeof(int), IDVoitureUtilisateur);
        }
Beispiel #2
0
 void RotationCollision(Voiture voiture, bool enContact, float angleMax, bool avant)
 {
     if (enContact)
     {
         VitesseRotation = (angleMax) / 4f;
     }
     VitesseRotation -= VitesseRotation * 0.1f;
     if (!avant)
     {
         voiture.Rotation = new Vector3(voiture.Rotation.X, voiture.Rotation.Y - (VitesseRotation), voiture.Rotation.Z);
     }
     else
     {
         voiture.Rotation = new Vector3(voiture.Rotation.X, voiture.Rotation.Y + (VitesseRotation * 2), voiture.Rotation.Z);
     }
 }
Beispiel #3
0
        public void GestionCollisionVoiture(Voiture voiture)
        {
            float deltaRotation = NormalizeRotation(Rotation.Y) - NormalizeRotation(voiture.Rotation.Y);

            if (BoxVoitureAvant.Intersects(voiture.BoxVoitureArrière))
            {
                AvanceCollision           = true;
                Translation               = false;
                DernièreCollisionEstAvant = false;
                RotationEnCollision       = (float)Math.Sin(deltaRotation) * ((float)(Math.PI / 8f) * (PixelToKMH(Vitesse) / VITESSE_MAX));
                RotationCollision(voiture, true, RotationEnCollision, DernièreCollisionEstAvant);
                voiture.Vitesse += Vitesse * 0.5f;
                Vitesse         -= Vitesse * 0.5f;
                voiture.Avance();
                AvancePossible = false;
                if (Vitesse >= KMHtoPixel(50))
                {
                    SoundCollisionVoiture.Play();
                }
            }
            else if (BoxVoitureAvant.Intersects(voiture.BoxVoitureMillieu) && !BoxVoitureAvant.Intersects(voiture.BoxVoitureArrière))
            {
                Translation = true;
                if (PixelToKMH(Vitesse) >= 40.0f)
                {
                    Vitesse /= 2f;
                }
                if (Vitesse > 0)
                {
                    Vitesse -= KMHtoPixel(1.0f);
                }
                if (deltaRotation <= MathHelper.Pi)
                {
                    if (Vitesse >= 0)
                    {
                        voiture.Position = new Vector3(voiture.Position.X + (1.01f * Vitesse * (float)Math.Sin(deltaRotation)), voiture.Position.Y, voiture.Position.Z - (1.01f * Vitesse * (float)Math.Cos(deltaRotation)));
                    }
                }
                else
                {
                    if (Vitesse >= 0)
                    {
                        voiture.Position = new Vector3(voiture.Position.X - (1.01f * Vitesse * (float)Math.Sin(deltaRotation)), voiture.Position.Y, voiture.Position.Z + (1.01f * Vitesse * (float)Math.Cos(deltaRotation)));
                    }
                }
                if (Vitesse >= KMHtoPixel(50))
                {
                    SoundCollisionVoiture.Play();
                }
            }
            else if (BoxVoitureAvant.Intersects(voiture.BoxVoitureAvant))
            {
                AvanceCollision           = false;
                Translation               = false;
                DernièreCollisionEstAvant = true;
                RotationEnCollision       = (float)Math.Sin(deltaRotation - MathHelper.Pi) * ((float)(Math.PI / -8f) * (PixelToKMH(Vitesse) / VITESSE_MAX));
                RotationCollision(voiture, true, RotationEnCollision, DernièreCollisionEstAvant);
                voiture.Vitesse += Vitesse * -0.5f;
                Vitesse         -= Vitesse * 0.5f;
                voiture.Avance();
                if (Vitesse >= KMHtoPixel(50))
                {
                    SoundCollisionVoiture.Play();
                }
            }
            else
            {
                AvancePossible = true;
                if (!Translation)
                {
                    voiture.Décélération(AvanceCollision);
                    voiture.Avance();
                }
            }
            RotationCollision(voiture, false, RotationEnCollision, DernièreCollisionEstAvant);
        }