VB.NET collision between pictureboxes

27,519

One way of doing it:

For Each PictureBox In Me.Controls
  If PictureBox IsNot PictureBox1 AndAlso PictureBox1.Bounds.IntersectsWith(PictureBox.Bounds) Then
     collision = True
     Exit For 'Exit when at least one collision found 
  Else : collision = False
  End If
Next

This would set collision to False if PictureBox is indeed PictureBox1. But note that you are overwriting the collision state in each loop, which not what you really want. You should exit the for loop when one collision is found (see my code). You may also change your code like this :

collision = False
For Each PictureBox In Me.Controls
  If PictureBox IsNot PictureBox1 AndAlso PictureBox1.Bounds.IntersectsWith(PictureBox.Bounds) Then
     collision = True
     Exit For
  End If
Next
Share:
27,519
Admin
Author by

Admin

Updated on July 19, 2022

Comments

  • Admin
    Admin almost 2 years

    I'm trying to make a simple game and i need to know if picturebox1( my character) collides with other pictureboxes ( the walls).

    I have already worked out how do this but it only works with my character and 1 other picturebox for example:

    If picturebox1.bounds.intersectWith(picturebox2.bounds) then
       collision = true
    end if
    

    I tried to do something else like this:

    For Each PictureBox In Me.Controls
      If PictureBox1.Bounds.IntersectsWith(PictureBox.Bounds) Then
         collision = True
      Else : collision = False
      End If
    Next
    

    But then the boolean collision would always be true because picturebox1 (the character) always intersects with itself.

    So i changed the picturebox into a panel and the code looks the following:

    For Each PictureBox In Me.Controls
      If Panel1.Bounds.IntersectsWith(PictureBox.Bounds) Then
         collision = True
      Else : collision = False
      End If
    Next
    

    But it only works with 1 single picture box and not with all the pictureboxes in the form. I don't understand why... And if anyone maybe knows how to add an exception in the for each function so i can keep my picturebox1

    something like this maybe

    For each picturebox(except(picturebox1)) in me.controls
    

    because i've searched for that but didn't find anything...

    Any help is greatly appreciated :) Thanks!