2015-01-08 1 views
1

나는 게임 (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

은 아마도 더 나은 접근 방식은 플레이어 chatacter 운동 루틴에서 충돌을 확인하는 것입니까? 캐릭터가 벽에 있다면, 뒤로 던져 버리는 것입니다 (JumpW로). 장애가 없다면 PC가 첫 번째 방향으로 만 움직일 수 있다고 말하는 것이 더 나을 것입니다.

또한 벽을 추가 (또는 제거) 할 때마다 코드를 변경하지 않아도되도록 for x = imgwall.LBOUND to imgwall.UBOUND 또는 for each wall in imgwall 루프를 사용해야합니다.

+0

"Bomber Man"을하고 있기 때문에 나는 플레이어와 관련된 애니메이션을 가지고 있기 때문에 다른 방향을 가질 필요가 있습니다. 장애물을 통과시켜 통과 할 수없는 또 다른 방법이 있습니까? @CMaster –

관련 문제