C# 向ArrayList中添加超过个对象
我正在用XNA开发一个简单的射击游戏。每当对象碰到敌方时,我都会将其副本添加到数组列表中。问题是,对象被添加了2次 代码如下: -->玩家发射球体 -->s是火球 -->sp是s的副本 -->当球体处于活动状态时,将绘制球体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),
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支票。