【发布时间】:2015-01-28 18:57:45
【问题描述】:
我是初学者,我有一个游戏,如果精灵发生碰撞,它们将被移除。但是当我播放它并且精灵发生碰撞时,我收到此错误:“集合已更改。可能的库存操作未执行。” (我把这句话从荷兰语翻译成英语)。我真的不知道如何解决这个问题,感谢任何帮助。
private void checkCollisions()
{
foreach (ISprite s in allSpriteBullets)
{
Rectangle kogel = new Rectangle((int)s.position.X, (int)s.position.Y, 10, 10);
foreach (ISprite d in allSpriteObstakels) // error here
{
Rectangle blokjes = new Rectangle((int)d.position.X, (int)d.position.Y, 25, 25);
Rectangle overlap = Rectangle.Intersect(kogel, blokjes);
if (!overlap.IsEmpty)
{
if (s is Bullet)
{
d.CollisionWith(s);
s.CollisionWith(d);
hud.Score += 10;
allSpriteBullets.Remove(s);
allSpriteObstakels.Remove(d);
}
if (d is Monsters)
{
s.CollisionWith(d);
d.CollisionWith(s);
}
}
}
}
}
【问题讨论】: