2017-04-01 2 views
2

pygameのビデオゲームでTRUMPの敵をアニメートしようとしています。私はすべての画像をロードしており、私は彼がランダムに動き回るようにしたいと思っています。私は敵のTRUMPキャラクターのイメージをアニメートさせるのに苦労しています。私は彼の最初のフレームを表示することができますが、その後、私は失われています。 animate2関数のコード内に問題のある領域が表示されます。
私は自分のスプライトを更新するためにcurrent_frame2またはself.imageをどのように使用するのか混乱しています。誰も進行する方法を知っていますか?pygameで敵のスプライトをアニメーション化するためにself.imageとcurrent_frameを使用する

class TRUMP(pg.sprite.Sprite): 
    def __init__(self, game): 
     pg.sprite.Sprite.__init__(self) 
     self.game = game 
     self.current_frame2 = 0 
     self.last_update2 = 0 
     self.load_images() 
     self.animate2() 

     self.image = self.TRUMP_fingers_l[0] 
     self.rect = self.image.get_rect() 
     self.rect.center = (WIDTH *3/4), (589) 
     self.pos = vec((WIDTH/2), (HEIGHT/2)) 
     self.vel = vec(0, 0) 
     self.acc = vec(0, 0) 

     self.screen = pg.display.set_mode((WIDTH, HEIGHT)) 
     self.clock = pg.time.Clock() 

    def load_images(self): 

     self.TRUMP_fingers_l = [self.game.spritesheet.get_image(503, 1, 248, 559)] 
     for frame in self.TRUMP_fingers_l: 
      frame.set_colorkey(BLACK) 
     self.TRUMP_walk1_l = [self.game.spritesheet.get_image(643, 562, 249, 448)] 
     self.TRUMP_walk2_l = [self.game.spritesheet.get_image(894, 474, 249, 448)] 
     self.TRUMP_hailing = [self.game.spritesheet.get_image(1, 571, 248, 439)] 
     self.TRUMP_throwing = [self.game.spritesheet.get_image(753, 1, 248, 471)] 
     self.TRUMP_smug = [self.game.spritesheet.get_image(252, 1, 249, 562)] 
     self.TRUMP_flexing_l = [self.game.spritesheet.get_image(1, 1, 249, 568)] 

    def animate2(self): 

     now = pg.time.get_ticks() 
     if now - self.last_update2 > 200: 
      self.last_update2 = now 
      self.current_frame2 = self.TRUMP_hailing[0] 
      self.image = self.TRUMP_hailing[0] 

答えて

0

あなたがイメージリストを循環するインクリメントいる(タイマーが正しく動作するかどうか)だけindex変数を必要とするように私には思えます。インデックスを正しい範囲に保つには、モジュロ% len(self.TRUMP_hailing)を使用してください。

# In the __init__ method: 
    self.index = 0 

def animate2(self): 
    now = pg.time.get_ticks() 
    if now - self.last_update2 > 200: 
     self.index += 1 
     self.index %= len(self.TRUMP_hailing) 
     self.last_update2 = now 
     self.current_frame2 = self.TRUMP_hailing[self.index] 
     self.image = self.TRUMP_hailing[self.index] 
関連する問題