碰撞功能无法正常工作

时间:2016-05-25 14:46:40

标签: c# breakout

我目前正在开发类似的游戏“Breakout”。我所遇到的问题是,每当球越过砖块的边缘时,它既不会移除砖块,也不会改变球的方向。

if (ball.Left > l.Left && (ball.Left + ball.Width) < l.Left-margin + l.Width)
{
    if (ball.Top > l.Height && ball.Top < l.Top)
    {
        this.Controls.Remove(l);
        ballDX *= -1;
        ballDY *= -1;
    }

    else if (ball.Top < l.Height && ball.Top > l.Bottom)
    {
        this.Controls.Remove(l);
        ballDX *= +1;
        ballDY *= +1;
    }
}

1 个答案:

答案 0 :(得分:0)

查看您的代码,您正在测试

if (ball.Top > l.Height && ball.Top < l.Top)

但这似乎是检查你的球的顶部是否大于砖的高度,而不是砖的位置。那可能是个问题吗?

如果这不是问题,我的建议是添加一些调试代码来输出球和砖位置和高度的值,以便您可以了解计算中的错误。