如何让我的图片框检测到碰撞并反弹?

时间:2014-03-18 14:00:23

标签: vb.net

这是我的碰撞方法,但它只是在相反的方向反弹。

'Collision Method 1
    Dim Col As Boolean = Collision(pxbox, pbpaddle1)
    If Col = True Then
        moveRight = Not moveRight
        moveDown = Not moveDown
    End If

    Dim Col2 As Boolean = Collision(pxbox, pbpaddle2)

    If Col2 = True Then
        moveRight = Not moveRight
        moveDown = Not moveDown
    End If

这是我的碰撞功能

Private Function Collision(ByVal P1 As PictureBox, ByVal P2 As PictureBox) As Boolean
    If P1.Left + P1.Width < P2.Left Then Return False
    If P2.Left + P2.Width < P1.Left Then Return False
    If P1.Top + P1.Height < P2.Top Then Return False
    If P2.Top + P2.Height < P1.Top Then Return False

    Return True

End Function

1 个答案:

答案 0 :(得分:0)

有一些问题。

  1. 目前尚不清楚P1,P2或两者是否正在移动。是一个图片框在包含的图片框内移动,还是两个图片框在屏幕上移动?
  2. 在碰撞功能中,您应该测试所有四种可能性,并且当四者都不满足时返回false。否则就会发生碰撞。
  3. 在你的碰撞方法中,对于与垂直或水平&#34;墙壁#34;的碰撞,你应该只改变Moveright或Movedown,但不能同时改变两者(除非碰撞在一个角落里)。
  4. 如果碰撞发生在两个球之间,则应使用平均角度(用每个球的速度和质量加权),并使用该角度的垂线作为&#34;墙壁&#34;球从球上弹开。 (这假设球没有直径。)