예제 #1
0
파일: Map.cs 프로젝트: Widoo/projet_SBS
 //S'occupe de la collision des balles avec les "barrels"
 public void collision_barrel_balle(Projectile balle)
 {
     futur_rectangle = balle.rectangle();
     bool test = true;
     foreach (DestructibleItems barrel in liste_barrel) //Vérifie pour chaque "barrels"
     {
         if ((test)) //Permet de casser la boucle dès qu'un "barrel" est touché
         {
             if (futur_rectangle.Intersects(barrel.Aire_barrel) && barrel.type == "barrel") //Si la HitBox du projectile est en contact avec celle du "barrel", alors (...)
             {
                 balle.isVisible = false; //La balle n'existe plus
                 barrel.isVisible = false; //Le "barrel" n'existe plus
                 AddExplosion(new Vector2(barrel.Aire_barrel.X + 8, barrel.Aire_barrel.Y + 8), barrel.Aire_barrel.X - 16, barrel.Aire_barrel.Y - 16, 48);
                 moteur_son.PlayExplosionEffect();
                 test = false; //On casse le si
             }
         }
     }
 }
예제 #2
0
파일: Map.cs 프로젝트: Widoo/projet_SBS
        public void update_projectiles(KeyboardState keyboard)
        {
            foreach (Projectile balle in liste_projectile)
            {
                balle.init = 0;
            }

            foreach (Projectile balle in liste_projectile)
            {
                while ((balle.init < balle.projectileMoveSpeed) && balle.isVisible)
                {
                    balle.collision_entite_balle(liste_ia); //Collision entres balles et entité
                    balle.collision_balle(map_physique); //Collision entre balle et mur
                    collision_barrel_balle(balle);
                    balle.init++; //On bouge la balle d'une case
                }
            }

            foreach (Player joueur in liste_joueurs) //On ajoute des balles en fonction des touches et du refroidissement
            {
                if ((joueur.tir && joueur.refroidissement >= 12 && etape1 && joueur.Ammo > 0))
                {
                    balle = new Projectile(Ressources.Projectile, (int)joueur.centre().X, (int)joueur.centre().Y, 10, joueur.Direction, 50);
                    liste_projectile.Add(balle);
                    joueur.refroidissement = 0;
                    joueur.Ammo = joueur.Ammo - 1;
                    moteur_son.PlayTire();
                }
                joueur.refroidissement++;
            }

            liste_projectile2 = new List<Projectile>(); //On nettoie la liste, comme avec les IA
            foreach (Projectile balle in liste_projectile)
            {
                if (balle.isVisible)
                    liste_projectile2.Add(balle);
            }
            liste_projectile = liste_projectile2;
        }