如何阻止图像通过另一个图像?

时间:2015-01-08 01:14:50

标签: object vb6 collision-detection game-physics

我正在创建一个游戏(Bomber Man),我需要我的角色不要通过墙块,这些块是控制阵列中的单独图像。当我使用这个代码时,玩家会穿过墙壁并向各个方向疯狂。

*注意:我已经找到了如何进行碰撞检测,我的主要问题是在检测到碰撞时该怎么办?

这是我到目前为止的代码,

'imgWhite is my player,imgWall is my block of wall. 
'JUMPW is my Const variable which is set to 325

Private Sub tmrBlock_Timer()

    Dim x As Integer

    For x = 0 To 72
        If imgWhite.Left < (imgWall(x).Left + imgWall(x).Width) Then
            white.dx = JUMPW
        End If

        If imgWall(x).Left < (imgWhite.Left + imgWhite.Width) Then
            white.dx = -JUMPW
        End If

        If imgWhite.Top < (imgWall(x).Top + imgWall(x).Height) Then
            white.dy = JUMPW
        End If

        If (imgWhite.Top + imgWhite.Height) > imgWall(x).Top Then
            white.dy = -JUMPW
        End If
    Next x

End Sub

1 个答案:

答案 0 :(得分:0)

或许更好的方法是检查播放器聊天运动例程中的碰撞? 看起来你在这里做的是如果角色在墙上,将它们扔回去(通过JumpW)。如果没有障碍,可能最好说PC只能在一个方向上移动。

此外,您应该使用for x = imgwall.LBOUND to imgwall.UBOUNDfor each wall in imgwall循环,以避免每次添加(或删除)墙时都必须更改代码。