2016-05-25 16 views
2

私は現在、「ブレークアウト」と同様のゲームを開発中です。問題は、ボールがブリックの端を乗り越えるたびにブリックを取り除くことも、ボールの方向を変えることもできないことです。あなたのコードを見てみると衝突機能が正常に動作しません

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

ボールの位置とコントロールの大きさ(高さ)を比較しています。おそらく最初の場所ではないでしょう。 – decPL

答えて

0

、あなたは

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

をテストしている。しかし、これはあなたのボールの上ではなく、レンガの位置よりも、あなたのレンガの高さよりも大きいかどうかをチェックしているように見えます。そこに問題がありますか?

これは問題ではない場合は、ボールとレンガの位置と高さの値を出力するデバッグコードを追加して、計算上何が間違っているかを知ることができます。

関連する問題