2010-11-08 6 views
0

Je développe un jeu de tir simple dans XNA. J'ajoute la copie de l'objet à une liste de tableau chaque fois qu'elle frappe un hostile. Le problème est, l'objet est ajouté 2 fois.Ajouter des objets plus que pour ArrayList

Voici le code:

-> Joueur tire sphères.

-> s est tiré sphère

-> sp est une copie de s

-> une sphère est dessinée ssi il est actif

if(s.isCollided) 
{ 
    s.isCollided = false; 
    Sphere sp = new Sphere(s.texture, new Vector2(s.dest_rectangle.X,s.dest_rectangle.Y), s.speed); 
    s.dest_rectangle = new Rectangle((int)s.position.X, (int)s.position.Y, s.texture.Width, s.texture.Height); 
    sp.isActive = true; 
    sp.isCollided = false; 
    collidedSpheres.Add(sp); 
} 
+1

Cette partie du code n'est probablement pas le coupable, si possible pourriez-vous la fonction dans laquelle il se trouve? – Doggett

Répondre

1

Il est possible que s est entré en collision avec ton hostile pendant deux "frames".

Vous pouvez essayer d'ajouter cette ligne à la fin de votre fonction: spheres.Remove(s);.

Les sphères en double ont-elles la même position?

+0

Mais que se passe-t-il si, par hasard, il va une fois entrer en collision dans un seul cadre? Ou même plus? Je ne connais aucun XNA, mais prenez des précautions! (Lag ou vitesse de balle?) – Vercas

+0

S'il entre en collision dans un seul cadre, il sera ajouté à la liste sp une fois. S'il veut qu'il soit ajouté pour plus d'une image, il doit se débarrasser de son chèque. – baflgraf

Questions connexes