宣告: 原創不易,未經許可,不得轉載
0.前言
hello,小夥伴們!我還是帶你們一起寫遊戲的貓姐。
今天是這個遊戲的,第6集了!上一集,我們給遊戲主角換了個馬甲,將小方塊變成了小男孩!今天我們要讓,小男孩的雙腳,靈活的動起來,效果是這樣的!
1.動圖的原理
我們讓小男孩的雙腳動起來後,在視覺上,就感覺小男孩在走路一樣!
動圖的基本原理就是多張圖片不停地播放!
這裡我們用三張圖片,在image
目錄下,我已經準備好了 小男孩的三張圖片,我們把原先的player.png
命名為player0.png
,後兩張圖片是player1.png
,player2.png
。
我們回來寫程式碼。
在這裡,我們還是修改Player
類,我們用for迴圈
,把這三張圖片都load
進來,load進來的圖片,我們將這三個圖片對像,都放到self.plays
這個列表中,這裡我先寫完程式碼,再一行一行的講解。
self.plays = []
for i in range(3):
image_filename = "./images/player" + str(i) + ".png"
image = pygame.image.load(image_filename)
self.plays.append(image)
通過for i in range(3):
我們拼接出男孩圖片的路徑,然後賦值給image_filename
,
再使用pygame.image.load
函式 來匯入這張圖片,括號裡面傳入的是圖片的路徑。
大家有沒有發現,這個pygame.image.load
函式我已經用過很多次了,希望大家記住這個匯入圖片的函式。
最後,通過self.plays的append
函式把圖片都追加到列表中。
接下來,我們要在update
函式中,用blit
函式,輪流繪製這三張小男孩的圖片,我們只需要把self.image
換成self.plays[self.image_index]
就ok了!
def update(self):
screen.blit(self.plays[self.image_index], self.rect)
這裡用到了一個新的變數self.image_index
,所以我們要在init
函式中將它賦值為0。
self.image_index = 0
我們執行程式,看下效果。可以看到,小男孩的雙腳,沒有任何變化!
怎麼回事呢?因為image_index
一直為0,所以顯示的一直是player0.png
這張圖片。
我們還需要讓image_index這個變數,不停的取0,1, 2這三個值 。
所以,我們需要寫一個更新image_index變數的函式:
def update_image_index(self):
self.image_change_time += 1
if self.image_change_time > 2:
self.image_change_time = 0
self.image_index = (self.image_index + 1) % 3
上面用到了一個新的變數,self.image_change_time
,所以在init
函式中,我們將image_change_time
賦值為0:
self.image_change_time = 0
最後,我們在update
函式中加一行程式碼,呼叫update_image_index
函式。
def update(self):
self.update_image_index()
screen.blit(self.plays[self.image_index], self.rect)
好了,我們執行遊戲,看下效果。
可以看到,小男孩的雙腳已經動起來了。
有意思吧,真是滿滿的成就感啊!
關注貓姐,下一集我們來搞從天而降的蘑菇!