2011-12-28 3 views
2

複数のスプライト位置のシートから複数の画像を使用して、私のキャラクターが歩いていると話すために、「錯覚」を作りたいと思います。 WASDを使用して単一の画像を移動する方法しか知りません。ここに私のコードは、これまでのところです:スプライトシートから複数の画像を使用してウォーキングキャラクターを作成する方法

room_bg = 'woodf.jpg'#wood floor background 
screen = pygame.display.set_mode((640,360),0,32) 

background = pygame.image.load(room_bg).convert()#background here 
x,y = 290,150 
movex, movey = 0,0 
while 1:#blitting background to middle of screen, start of main game loop 
    screen.blit(background, (170,100)) 
    for event in pygame.event.get(): 
     if event.type == QUIT: 
     pygame.quit() 
     sys.exit() 

    if event.type == KEYDOWN: 
     if event.key == K_a: 
      movex = -1 
      pygame.image.load('s_left1.png') 
      pygame.Surface.blit(mc_left1) 
     elif event.key == K_d: 
      movex = +1 
     elif event.key == K_w: 
      movey = -1 
     elif event.key == K_s: 
      movey = +1 
    if event.type == KEYUP: 
     if event.key == K_a: 
      movex = 0 
     elif event.key == K_d: 
      movex = 0 
     elif event.key == K_w: 
      movey = 0 
     elif event.key == K_s: 
      movey = 0 

x+= movex 
y+= movey 

mc = pygame.image.load('ss.png').convert() 
mc.set_colorkey((0,0,0)) 
screen.blit(mc,(x,y)) 
pygame.display.update() 

答えて

1

あなたはまず、例えば、あなたが使用したい、スプライトシートから各呼び出しで描画方法にそれらを提供するためのイテレータを個々のスプライトを抽出したいです。

Here you have a tutorialスプライトシートから個々の画像を取得する方法と、それらをアニメーションに使用する方法について説明します。

0

これはスプライトをアニメーション化する最も効率的な方法ではないかと疑いますが、これまでのところ私のために働いています。

まず、すべてのスプライトフレームをスプライトシートというリストにロードします。次に、ムーブイベントがトリガされるたびに、各フレームを繰り返し、各繰り返しの間にディスプレイを更新します。私はまた、それがより流動的に見えるように、わずかな時間遅延を導入しました。もう一度、おそらくそれを行う最良の方法ではありませんが、それは方法です。

for spriteframe in spritesheet: 
     x_add = x/len(spritesheet) 
     y_add = y/len(spritesheet) 
     player.setPosition(player.getX() + x_add, player.getY() + y_add) 
     updateBackground(current_map) 
     pygame.time.delay(40) 
     updateCharacter(player,spriteframe, image) 
     pygame.display.update() 
+0

私もこれを使用しますが、 'pygame.time.delay(40)'ではなく 'Clock = pygame.time.Clock()'と 'Clock.tick(25)'を使います。 – fdvfcges