我正在创建一个游戏(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
答案 0 :(得分:0)
或许更好的方法是检查播放器聊天运动例程中的碰撞? 看起来你在这里做的是如果角色在墙上,将它们扔回去(通过JumpW)。如果没有障碍,可能最好说PC只能在一个方向上移动。
此外,您应该使用for x = imgwall.LBOUND to imgwall.UBOUND
或for each wall in imgwall
循环,以避免每次添加(或删除)墙时都必须更改代码。