2017-10-13 5 views
2

2つのオブジェクト(2つの画像ボックスの形をしたもの)が衝突した場合、ユーザーは命を失うゲームに取り組んでいます。しかし、if-elseやswitch caseステートメントを使って、どのように衝突したのかを判断するのは不安です。私はこれを使用しようとしましたが、それほど多くないように見えるので、ある画像ボックスの位置が他の画像ボックスの位置と正確であれば、何かをするでしょう。これは、あまりやらなかったので、この部分のための条件文を使用しての練習としてのみ提供:C#WinFormsで2つの画像ボックスが衝突したときを見つける方法

if(pictureBox1.Location == pictureBox2.Location) 
      { 
       pictureBox1.Location = new Point(pictureBox1.Left - 10); 
      } 
+1

は、2D衝突を検出するアルゴリズムを調べてください。 https://developer.mozilla.org/en-US/docs/Games/Techniques/2D_collision_detection –

+0

@SamMarionのリンクをありがとうございます。私はそれを調べます。 –

+0

コードが機能しない理由は、LocationがpictureBoxの特定の点(左上)にあるためです。これが真実である場合の唯一の方法は、各画像ボックスの左上隅が同じ点にあるかどうかである(そして、それらが.Equalsの代わりに==を使用しているので、私が信じている同じPointオブジェクトを参照する場合のみ) –

答えて

5

Rectangle Sを作成し、交差点をチェック:

var rect1 = new System.Drawing.Rectangle(pictureBox1.Location, pictureBox1.Size); 
var rect2 = new System.Drawing.Rectangle(pictureBox2.Location, pictureBox2.Size); 

if (rect1.IntersectsWith(rect2)) 
{ 
    // Here is your collision. 
} 
+0

本当にありがとう、これは本当に役に立ちます!私はこれらのコメントで周り遊んで、うまくいけば良い結果を見ていきます –

関連する問題