2个物体碰撞时如何更改变量?
问题描述:
我正在尝试做一个非常非常基本的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
答
添加额外的标志(比方说,canBounce
),其控制方向是否被允许改变/更新,并且一旦检测交点其设置为false
。
接下来,每当路口检查失败时,您可以再次设置canBounce = true
。
只有在检测到路口时才改变方向和canBounce == true
。
这样,方向不会改变此代码运行的每一帧,但只会在第一帧交叉点上,直到它不再发生(即球移出相交桨)。
答
想通了,我已经在Timer中声明了“方向”,所以它总是正确的。
丹尼尔Shiffman有一个非常有趣的[编码挑战](https://www.youtube.com/watch?v=IIrC5Qcb2G4)关于编程一个庞的例子。它使用Processing进行Java处理,但看起来很有趣,而且你可以学到很多关于共谋检测的知识: – FunThomas