基本上,我的游戏是用木板阻止石头从天而降。我不确定什么地方不能正常工作,但下面是我的代码:在RockManager类中
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;
}
}
}
}在Rocks类中
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分)
发布于 2019-12-16 22:48:39
尝试将this转换为IGameComponent或GameComponent对象。
public void HandleCollision()
{
Game.Components.Remove((GameComponent)this);
}告诉我这对你是否有效!
编辑:您可能还希望将删除游戏对象的操作推迟到以后foreach (GameComponent component in Game.Components)循环不使用游戏对象时,因为在此期间,该循环可能会锁定删除元素。
https://stackoverflow.com/questions/59219720
复制相似问题