我正在努力在砖块清单上实施碰撞检测。 我有一个游戏随机丢弃应该叠加在屏幕底部的砖块。我设法让它们停在屏幕的底部,但它们没有堆叠。
我在更新功能中有这个:
if (r.Next(0, 50) == 8)
{
_bricks.Add(new NormalBrick(this, new Vector2(r.Next(0, 700), 100)));
}
foreach(Brick b in _bricks)
{
b.move(GraphicsDevice.Viewport);
}
我的move()
函数包含以下代码:
public void move(Viewport viewport)
{
if (_position.Y == (viewport.Height - _texture.Height ))
{
_position = new Vector2(_position.X, _position.Y);
}
else
{
_position = new Vector2(_position.X, _position.Y + _speed);
}
}
如何确保砖块不会全部停在屏幕底部,而砖块必须检查砖块下方是否有砖块?
我在这里检查了其他问题,但我找不到答案,我已经尝试了几个方法来修复它。任何帮助将不胜感激。
答案 0 :(得分:1)
我会为你的每个砖创建矩形(除非你已经这样做了)。然后在Update()方法中,在移动后使用类似brick.Rectangle.Intersects(anotherBrick)的东西。如果为true,则将当前砖块放在相交的底砖上方。
确保每次砖块移动时移动砖块的矩形。
我希望这会有所帮助。如果您需要任何进一步的帮助,请与我们联系。