2013-03-09 116 views
3

我想做一个简单的游戏,我需要知道如果picturebox1(我的角色)与其他相框(墙壁)相撞。VB.NET相机之间的冲突

我已经摸索出如何做,但它只是我的性格和其他1周的PictureBox例如作品:

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

我尝试做别的事情是这样的:

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

但那么布尔碰撞总会是真的,因为picturebox1(字符)总是与自身相交。

所以我改变了图片框到面板和代码看起来如下:

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

但它只能与1个图片框,而不是与形式的所有pictureboxes。 我不明白为什么...... 如果有人也许知道如何在添加例外对于每个功能,所以我可以让我的picturebox1

这样的事情也许

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

因为我我找到了,但没有找到任何东西...

任何帮助是非常感谢:) 谢谢!这样做的

回答

1

方式一:

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 

这将设置碰撞False如果图片框确实PictureBox1。但是请注意,你正在覆盖每个循环中的碰撞状态,这并不是你真正想要的。当发现一个碰撞时,您应该退出for循环(请参阅我的代码)。你也可以这样改变你的代码:

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 
+0

谢谢一堆! :D – user2151534 2013-03-09 15:03:46

+0

@ user2151534不客气。 – AbZy 2013-03-09 15:05:51