如何从游戏组件中删除游戏组件?



基本上我的游戏是用木板阻止石头从天而降。 我不确定什么功能不正常,但这是我的代码: 在摇滚经理类中

public void CheckForPlankCollision(Plank plank)
{
foreach (GameComponent component in Game.Components)
{
if (component is FallingRock rock)
{
if (plank.Bounds.Intersects(rock.Bounds))
{
rock.HandleCollision();
Rectangle bounds = rock.Bounds;
}
}
}
}

在岩石类中

public void HandleCollision()
{
//rockPosition = rockAfterImpactPosition; // I tried to move it offscreen
//rockPosition = Vector2.Zero; //I tried for any reaction
//this.Enabled = false; // tried this
//Game.Components.Remove(this); //tried this
}

我也在尝试实施一个评分系统。(岩石撞到木板加1分,碰到地面减1分(

尝试将this转换为IGameComponentGameComponent对象。

public void HandleCollision()
{
Game.Components.Remove((GameComponent)this);
}

告诉我这是否适合您!

编辑:您可能还希望将游戏对象的删除推迟到以后,当foreach (GameComponent component in Game.Components)循环未使用它时,该循环可能会锁定在此期间删除元素。

最新更新