2016-06-22 4 views
-1

私はトップダウンゲームを作ろうとしており、プレイヤーの動きに問題があります。キー[W、A、S、D]を押すと、そのように移動します。しかし、私はそれがボタンが押されている限り、移動し続けたい。だから、私は限りplayerMovesの1が動いておくべき1人のプレーヤーあるようplayerMoveLeftplayerMoveRightplayerMoveDownまたはplayerMoveUp]python/pygameテストする特定のキー

  if allowMovement == 1: 
      if event.key == pygame.K_a: 
       playerMoveLeft = 1 
       print("Hello") 

      if event.key == pygame.K_d: 
       playerMoveRight = 1 

      if event.key == pygame.K_s: 
       playerMoveDown = 1 

      if event.key == pygame.K_w: 
       playerMoveUp = 1 

      if event.key == pygame.K_LSHIFT: 
       playerMoveSprint = 1 
       playerSpeed = 2 

1に変更します。 問題を知っている: 私がキーを解放すると、すべてのplayerMovesが0に設定されます。プレイヤーが停止する原因は何ですか?私はtestfor 1の特定のキーを持ち上げて、その特定のplayerMoveをこのテキストの下に0

 if event.type == pygame.KEYUP: 
     playerMoveLeft = 0 
     playerMoveRight = 0 
     playerMoveUp = 0 
     playerMoveDown = 0 
     playerMoveSprint = 0 

ができます一人一人のために

for event in pygame.event.get(): 
    if event.type == pygame.QUIT: 
     valmis = True 

    if event.type == pygame.KEYDOWN: 



############################## CONTROL PLAYER ############################ 
     if allowMovement == 1: 
      if event.key == pygame.K_a: 
       playerMoveLeft = 1 
       print("Hello") 

      if event.key == pygame.K_d: 
       playerMoveRight = 1 

      if event.key == pygame.K_s: 
       playerMoveDown = 1 

      if event.key == pygame.K_w: 
       playerMoveUp = 1 

      if event.key == pygame.K_LSHIFT: 
       playerMoveSprint = 1 
       playerSpeed = 2 

    if event.type == pygame.KEYUP: 
     playerMoveLeft = 0 
     playerMoveRight = 0 
     playerMoveUp = 0 
     playerMoveDown = 0 
     playerMoveSprint = 0 

if playerMoveSprint == 1: 
    playerSpeed = 1 

if playerMoveLeft == 1: 
    player_x -=(playerSpeed) 
if playerMoveRight == 1: 
    player_x +=(playerSpeed) 
if playerMoveUp == 1: 
    player_y -=(playerSpeed) 
if playerMoveDown == 1: 
    player_y +=(playerSpeed) 

おかげでプレイヤーの動きのための完全なコード領域があります!

+1

私はこの問題を理解していません。コードは、いずれかのキーが解放されたかどうかをチェックし、すべての移動を停止します。対応するキーの移動だけを止めたい場合は、 'if event.type == pygame.KEYUP'で' event.key'をチェックして 'if event.type == pygame.KEYDOWN '。 – Isa

+0

特定のキーが押されていない場合は、Wを前進させるためにWと言うことができます。私はplayerMovementUpだけを0にすることもできます。 – cmdtvt

+0

@cmdtvtだから、プレイヤーは東、あなたが与えた例では西洋と南洋がありますか?そうなら、それは不可能です。 –

答えて

0

一方向にしか行くことができ、あなたのプレイヤーと仮定すると(上/下/左/右)時:

STANDSTILL = 0 
UP = 1 
RIGHT = 2 
DOWN = 3 
LEFT = 4 
playermovement = STANDSTILL 

if event.type == pygame.KEYDOWN: 
    if allowMovement == 1: 
     if event.key == pygame.K_a: 
      playermovement = LEFT 

     if event.key == pygame.K_d: 
      playermovement = RIGHT 

     if event.key == pygame.K_s: 
      playermovement = DOWN 

     if event.key == pygame.K_w: 
      playermovement = UP 

     if event.key == pygame.K_LSHIFT: 
      playerMoveSprint = 1 
      playerSpeed = 2 

if event.type == pygame.KEYUP: 
    if allowMovement == 1: 
     if event.key == pygame.K_a or event.key == pygame.K_d or event.key == pygame.K_s or event.key == pygame.K_w: 
      playermovement = STANDSTILL 

     if event.key == pygame.K_LSHIFT: 
      playerSpeed = 0 

プレーヤーは、アップ/ダウン(同時に2つの方向に移動することができますと仮定し、左/右):

if event.type == pygame.KEYDOWN: 
    if allowMovement == 1: 
     if event.key == pygame.K_a: 
      playerMoveLeft = 1 
      playerMoveRight = 0 

     if event.key == pygame.K_d: 
      playerMoveRight = 1 
      playerMoveLeft = 0 

     if event.key == pygame.K_s: 
      playerMoveDown = 1 
      playerMoveUp = 0 

     if event.key == pygame.K_w: 
      playerMoveUp = 1 
      playerMoveDown = 0 

     if event.key == pygame.K_LSHIFT: 
      playerMoveSprint = 1 
      playerSpeed = 2 

if event.type == pygame.KEYUP: 
    if allowMovement == 1: 
     if event.key == pygame.K_a: 
      playerMoveLeft = 0 

     if event.key == pygame.K_d: 
      playerMoveRight = 0 

     if event.key == pygame.K_s: 
      playerMoveDown = 0 

     if event.key == pygame.K_w: 
      playerMoveUp = 0 

     if event.key == pygame.K_LSHIFT: 
      playerSpeed = 0 

それはプレイヤーがこれらのいずれかのボタンを押すたびに、プレイヤ図は右同時にを左に移動することを可能にするので、ゼロとは逆方向を設定するために意味をなさない方向(上/下で同じ)。

+0

私は行方不明だったことありがとうございました! – cmdtvt

関連する問題