基本上我的游戏是用木板阻止石头从天而降。 我不确定什么功能不正常,但这是我的代码: 在摇滚经理类中
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
转换为IGameComponent
或GameComponent
对象。
public void HandleCollision()
{
Game.Components.Remove((GameComponent)this);
}
告诉我这是否适合您!
编辑:您可能还希望将游戏对象的删除推迟到以后,当foreach (GameComponent component in Game.Components)
循环未使用它时,该循环可能会锁定在此期间删除元素。