当2个物体碰撞时,如何更改变量?

时间:2017-08-15 15:04:22

标签: vb.net

我正在努力制作一个非常非常基本的乒乓球游戏,并需要一些对象碰撞的帮助。当我运行以下代码并启动程序时,球会在屏幕上向右移动,但是当它击中球拍时,只要它接触球拍就开始向左移动,但是然后再向右移动,然后卡住在一个循环中。这可能是一个非常基本的问题,但感谢一些帮助,谢谢。

    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

2 个答案:

答案 0 :(得分:0)

添加一个额外的标记(例如canBounce),它控制是否允许方向更改/更新,并在检测到交叉点时将其设置为false

接下来,只要交叉点检查失败,您就可以再次设置canBounce = true

仅在检测到交叉点时更改方向 canBounce == true

这样,方向不会改变这个代码运行的每一帧,而只是在交叉的第一帧上,直到它不再发生(即球移动到交叉桨的“外面”)。

答案 1 :(得分:0)

想出来,我已经在计时器中声明了“方向”,所以它一直在正确。