C# 向ArrayList中添加超过个对象

C# 向ArrayList中添加超过个对象,c#,xna,arraylist,C#,Xna,Arraylist,我正在用XNA开发一个简单的射击游戏。每当对象碰到敌方时,我都会将其副本添加到数组列表中。问题是,对象被添加了2次 代码如下: -->玩家发射球体 -->s是火球 -->sp是s的副本 -->当球体处于活动状态时,将绘制球体 if(s.isCollided) { s.isCollided = false; Sphere sp = new Sphere(s.texture, new Vector2(s.dest_rectangle.X,s.dest_rectangle.Y),

我正在用XNA开发一个简单的射击游戏。每当对象碰到敌方时,我都会将其副本添加到数组列表中。问题是,对象被添加了2次

代码如下:

-->玩家发射球体

-->s是火球

-->sp是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);
 }

在两个“帧”中,
s
可能与您的对手发生碰撞

您可以尝试将这一行添加到函数的末尾:
spheres.Remove


重复的球体是否具有相同的位置?

这部分代码可能不是罪魁祸首,如果可能,您可以将其放在其中的函数中吗?但是,万一它在一帧内发生碰撞呢?甚至更多?我不知道XNA,但要小心!(滞后还是子弹速度?)如果它在一帧内发生碰撞,它将被添加到sp列表中一次。如果他想为多个帧添加,他需要取消s.IsCollide支票。