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 に答える