Vous lisez 1 fil de discussion
  • Auteur
    Messages
    • #65977
      SENIO
      Participant

      Salut !

      Je suis en train de crée un clone d’Asteroid sur Monogame,
      Jusqu’ici aucun problème, sauf que je n’arrive pas à supprimer mes « Bullets » qui sortent de l’écran.

      Je les marques avec un Boolean lorsqu’il sont hors de l’écran mais je ne trouve pas comment les supprimés.

      			foreach (Bullet item in pListBullets)
      			{
      				item.Position += item.Velocity;
      
      				if (item.Position.X < 0)
      					item.ToRemove = true;
      				else if (item.Position.X > Graphics.Viewport.Width)
      					item.ToRemove = true;
      				if (item.Position.Y < 0)
      					item.ToRemove = true;
      				else if (item.Position.Y > Graphics.Viewport.Height)
      					item.ToRemove = true;
      
      				pListBullets.RemoveAll(item => item.ToRemove == true);
      			}

      Celà me sort cette expection « System.InvalidOperationException : ‘Collection was modified; enumeration operation may not execute.' »

      J’ai essayer avec .Remove au lieu de .RemoveAll, même problème.
      J’ai aussi essayer de supprimer l’item en dehors de mon « foreach » mais celà ne fonctionne pas.

      Si quelqu’un à une réponse je suis preneur !

      Merci

    • #65978
      SENIO
      Participant

      Problème régler ! Après quelque essais il m’a suffis d’ajouter mon « Bullet » en paramètre de ma fonction qui contient le Foreach et de mettre ma commande de suppression en dehors de ce dernier :

      pListBullets.RemoveAll(pBullet => pBullet.ToRemove == true);

      Ça fonctionne à merveille !
      Ça pourra peut être en aider certain, à bientôt !

Vous lisez 1 fil de discussion
  • Vous devez être connecté pour répondre à ce sujet.