目前為止,Player的站立、行走、跳躍都是動畫了,隻有跳闆(即:Platform類)還是難看的矩形,這節我們把Platform也換成圖檔:
原來的Platform類長這個樣子:
View Code
如果用圖檔,就不再需要w,h這個參數了(因為圖檔自帶尺寸大小),是以變成下面這樣:
相應的,最開始初始化的5塊platform資訊(settings.py)
調整成:
同時,調整下Player出場時的位置,讓它站在最底面的第1塊闆上:
main.py裡的new函數,也做相應的調整:
main.py中的update函數裡,最後再調整一下:
跑起來看看,基本效果出來了,難看的矩形終于沒有了,但是仔細觀察下,漏洞百出,比如下面這些:
問題1:跳闆太靠右,邊界跑到螢幕外了
修複方法:
檢測下platform的right值,如果超出邊界,向左挪一點
問題二:platform把player執行個體給擋住了
類似photoshop的圖層一樣,pygame裡也有layer的概念,最後繪制的對象,預設在最上層
修複方法:main.py的draw函數,在最後,強制再繪制一次player(tips: 其實有更好的辦法,利用圖層概念,可參考part17部分)
問題三:跳闆疊在一起
解決方法:
思路:随機生成的新跳闆,先不急着加入self.platforms,而是運用碰撞檢測原理,與現有跳闆做碰撞檢測(疊在一起,肯定就碰撞上了),如果碰撞了,就扔掉(pygame下一幀會重新生成,如此循環,直到滿足條件的跳闆加入)
問題四: player已經超過了螢幕頂端,但是螢幕并沒有向上滾動,這樣玩家就無法看到頭頂的新跳闆。
解決辦法:
先來分析下main.py中update函數中的滾動處理
如果player的y軸速度為0,abs函數算出來的值為0,是以跳闆與兔子的y坐标值并不會動(也就是螢幕無法滾動),改進為下面這樣:
修複了上面這一堆bug後,再來運作下:
源碼: https://github.com/yjmyzz/kids-can-code/tree/master/part_12
作者:菩提樹下的楊過
本文版權歸作者,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。