2010-11-08 3 views
0

Я разрабатываю простую игру-шутер в XNA. Я добавляю копию объекта в список массивов всякий раз, когда он попадает против враждебности. Проблема в том, что объект добавляется 2 раза.Добавление объектов больше, чем в ArrayList

Вот код:

-> Игрок стреляет шарами.

-> s обжигает сферу

-> зр является копия с

-> сферы рисуется тогда и только тогда она активна

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

Эта часть кода, вероятно, не является виновником, если возможно, вы должны использовать функцию, в которой она находится? – Doggett

ответ

1

Вполне возможно, что s является сталкивающимся с вашим враждебным во время двух «кадров».

Вы можете попробовать добавить эту строку в конец своей функции: spheres.Remove(s);.

Имеют ли дублирующие сферы одинаковое положение?

+0

Но что, если, случайно, он однажды столкнется только в одном кадре? Или еще больше? Я не знаю XNA, но принимайте меры предосторожности! (Задержка или скорость пули?) – Vercas

+0

Если он сталкивается только в одном кадре, он будет добавлен в список sp один раз. Если он хочет, чтобы он был добавлен для более чем одного кадра, ему нужно избавиться от проверки s.isCollided. – baflgraf

Смежные вопросы