XNA:检查砖块列表上的碰撞

时间:2014-03-11 09:22:07

标签: c# list xna collision-detection

我正在努力在砖块清单上实施碰撞检测。 我有一个游戏随机丢弃应该叠加在屏幕底部的砖块。我设法让它们停在屏幕的底部,但它们没有堆叠。

我在更新功能中有这个:

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);
    }
}

如何确保砖块不会全部停在屏幕底部,而砖块必须检查砖块下方是否有砖块?

我在这里检查了其他问题,但我找不到答案,我已经尝试了几个方法来修复它。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

我会为你的每个砖创建矩形(除非你已经这样做了)。然后在Update()方法中,在移动后使用类似brick.Rectangle.Intersects(anotherBrick)的东西。如果为true,则将当前砖块放在相交的底砖上方。

确保每次砖块移动时移动砖块的矩形。

我希望这会有所帮助。如果您需要任何进一步的帮助,请与我们联系。