2016-05-31 6 views
0

파이 게임에서 기하학 대시와 같은 게임을 만들려고합니다. 점프 부분을 제외한 모든 작업을 완료했습니다. 캐릭터가 정사각형 블록에있을 때 그는 뛰어 올 수 있지만 공중에서 점프를 두 번 할 수 없도록해야합니다. 지금은 캐릭터가 땅에 뛰어 올라갈 수 있도록 캐릭터를 올려 놓을 수 있지만 캐릭터가 블록 집합에 점프하자 마자 블록이 위아래로 튀어 나오고 블록을 미끄러지면서 점프 할 수 없습니다. 아무도 도와 줄 수 있습니까?파이 게임에서 점프하기

onblock = False 
for i in squares_list: 
     if player_rect.bottom <= 560 and player_rect.colliderect(i): 
      onblock = True 
      player_rect.bottom = i.top + 1 
     if player_rect.collidepoint((i.topleft[0], i.topleft[1]+1)): 
      print ('Game Over') 
    if event.type == KEYDOWN:  # if space is pressed the character jumps 
      if event.key == K_SPACE: 
       print(onblock) 
       if onblock or player_rect.bottom == screen.get_rect().bottom : # prevents double jumps 
        vel_y = -20 # Makes the character jump up 
        player_rect.y -= 1 
    if onblock: 
     gravity = 0 
     vel_y = 0 
     current_angle = 0 
    else: 
     gravity = 1 
     vel_y += gravity 

    onblock = False 
+0

점프시 onblock을 True로 설정할 수 있습니까? 'player_rect.y - = 1'다음 줄과 같습니다. –

답변

0

당신이 들여 쓰기 그냥이 게시물에 나 게임에 잘못이 있다면 모르겠지만,이 게시물에 따르면, onblock 항상 모든 루프 후 거짓 일 것이다. 이것은 문제 일 수 있습니다.

다른 가능한 문제는 충돌이 발생할 때 캐릭터를 플랫폼 위에 1 픽셀 배치하는 것일 수 있습니다. 즉, 다음에 충돌을 확인할 때 문자가 블록에 놓여 있지 않으므로 onblock이 False가됩니다.

첫 번째 문제는 마지막 줄 onblocks = False을 제거하면 쉽게 해결됩니다. 두 번째 문제는 +1없이 player_rect.bottom = i.top으로 고정 될 수 있습니다.

자세한 내용은 this 타임 스탬프에 대한 자세한 내용은 talk을 참조하십시오.