2

我目前正在开发与“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;
    }
}
4

1 回答 1

0

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

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

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

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

于 2016-05-25T14:57:22.847 回答