2017-08-15 80 views
0

我正在嘗試做一個非常非常基本的pong遊戲,並需要一些物體碰撞的幫助。當我運行下面的代碼並啓動程序時,球就會在屏幕上移動,但是當它碰到槳時,只要碰到槳,就會開始向左移動,但隨後再次向右移動並卡住在一個循環中。這可能是一個非常基本的問題,但一些幫助將不勝感激,謝謝。2個物體碰撞時如何更改變量?

Dim direction As Integer = 0 

    If ball.Bounds.IntersectsWith(paddle1.Bounds) Then 
     direction = 1 
    End If 

    If ball.Bounds.IntersectsWith(paddle2.Bounds) Then 
     direction = 2 
    End If 

    If direction = 2 Then 
     ball.Left += 15 
    End If 

    If direction = 1 Then 
     ball.Left -= 15 
    End If 
End Sub 
+0

丹尼爾Shiffman有一個非常有趣的[編碼挑戰](https://www.youtube.com/watch?v=IIrC5Qcb2G4)關於編程一個龐的例子。它使用Processing進行Java處理,但看起來很有趣,而且你可以學到很多關於共謀檢測的知識: – FunThomas

回答

0

添加額外的標誌(比方說,canBounce),其控制方向是否被允許改變/更新,並且一旦檢測交點其設置爲false

接下來,每當路口檢查失敗時,您可以再次設置canBounce = true

只有在檢測到路口時才改變方向canBounce == true

這樣,方向不會改變此代碼運行的每一幀,但只會在第一幀交叉點上,直到它不再發生(即球移出相交槳)。

0

想通了,我已經在Timer中聲明瞭「方向」,所以它總是正確的。