我正在努力制作一个非常非常基本的乒乓球游戏,并需要一些对象碰撞的帮助。当我运行以下代码并启动程序时,球会在屏幕上向右移动,但是当它击中球拍时,只要它接触球拍就开始向左移动,但是然后再向右移动,然后卡住在一个循环中。这可能是一个非常基本的问题,但感谢一些帮助,谢谢。
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 :(得分:0)
添加一个额外的标记(例如canBounce
),它控制是否允许方向更改/更新,并在检测到交叉点时将其设置为false
。
接下来,只要交叉点检查失败,您就可以再次设置canBounce = true
。
仅在检测到交叉点时更改方向和 canBounce == true
。
这样,方向不会改变这个代码运行的每一帧,而只是在交叉的第一帧上,直到它不再发生(即球移动到交叉桨的“外面”)。
答案 1 :(得分:0)
想出来,我已经在计时器中声明了“方向”,所以它一直在正确。