2017-06-15 2 views
-1

私はスペースシューティングゲームのクローンで作業しています。マウスを使用してプレーヤを移動する必要があります。現在、プレーヤは矢印キーを押しながら左右のキーに移動します。は、パイゲームでマウスモーションを実装します

ここは私のコードの断片です。あなたはこれがマウスの(x、y)をあなたに与えると、その後で、マウスを非表示にするためにこれを使用し、この値に

をプレイヤーCOORDSを設定します

self.rect.center (or assign as you wish) = pygame.mouse.get_pos() 

を使用することができます

class Player(pygame.sprite.Sprite): 
def __init__(self): 
    pygame.sprite.Sprite.__init__(self) 
    ## scale the player img down 
    self.image = pygame.transform.scale(player_img, (50, 38)) 
    self.image.set_colorkey(BLACK) 
    self.rect = self.image.get_rect() 
    self.radius = 20 
    self.rect.centerx = WIDTH/2 
    self.rect.bottom = HEIGHT - 10 
    self.speedx = 0 


    ## unhide 
    if self.hidden and pygame.time.get_ticks() - self.hide_timer > 1000: 
     self.hidden = False 
     self.rect.centerx = WIDTH/2 
     self.rect.bottom = HEIGHT - 30 

    self.speedx = 0  ## makes the player static in the screen by default. 
    # then we have to check whether there is an event hanlding being done for the arrow keys being 
    ## pressed 

    ## will give back a list of the keys which happen to be pressed down at that moment 
    keystate = pygame.key.get_pressed()  
    if keystate[pygame.K_LEFT]: 
     self.speedx = -5 
    elif keystate[pygame.K_RIGHT]: 
     self.speedx = 5 

    #Fire weapons by holding spacebar 
    if keystate[pygame.K_SPACE]: 
     self.shoot() 

    ## check for the borders at the left and right 
    if self.rect.right > WIDTH: 
     self.rect.right = WIDTH 
    if self.rect.left < 0: 
     self.rect.left = 0 
+0

プレーヤを固定した速度でマウスに追従させたい、または常にマウスと同じX座標にしたいですか? –

+0

はい、プレイヤーはXとYの座標でマウスをたどります – orlandb

答えて

1

ゲームプレイヤーとポインタが表示されます。

pygame.mouse.set_visible(False) 
+0

どのように私のコードでそれを使用しますか? – orlandb

+0

スプライトを使用している場合、プレーヤークラスにupdate()関数がないのはなぜですか?あなたはクラスそのもののユーザー入力をチェックしていますか?どのようにすれば、コード全体を見ることなくこのコードを置く必要があるのですか?私が言うことができるのは、プレイヤーの位置を現在のマウスの位置に設定することです(これはスプライトであるため、playerクラスのupdate()funcで行うことをお勧めします)。 – GLaDOS

1

次のコードを使用してください。動かすかクリックしてください

if pygame.event.get() == MOUSEMOTION: 
    x,y=mousex,mousey=event.pos 
elif event.type == MOUSEBUTTONUP: 
    mousex,mousey=event.pos 
    mouseClicked = True  
1

私はこの問題を解決します。

if event.type == pygame.MOUSEMOTION: 
     player.rect.topleft = pygame.mouse.get_pos() 
関連する問題