天天看點

pygame-KidsCanCode系列jumpy-part12-platform圖檔

目前為止,Player的站立、行走、跳躍都是動畫了,隻有跳闆(即:Platform類)還是難看的矩形,這節我們把Platform也換成圖檔:

原來的Platform類長這個樣子:

pygame-KidsCanCode系列jumpy-part12-platform圖檔
pygame-KidsCanCode系列jumpy-part12-platform圖檔

View Code

如果用圖檔,就不再需要w,h這個參數了(因為圖檔自帶尺寸大小),是以變成下面這樣:

pygame-KidsCanCode系列jumpy-part12-platform圖檔
pygame-KidsCanCode系列jumpy-part12-platform圖檔

相應的,最開始初始化的5塊platform資訊(settings.py)

pygame-KidsCanCode系列jumpy-part12-platform圖檔
pygame-KidsCanCode系列jumpy-part12-platform圖檔

調整成:

pygame-KidsCanCode系列jumpy-part12-platform圖檔
pygame-KidsCanCode系列jumpy-part12-platform圖檔

同時,調整下Player出場時的位置,讓它站在最底面的第1塊闆上:

pygame-KidsCanCode系列jumpy-part12-platform圖檔
pygame-KidsCanCode系列jumpy-part12-platform圖檔

 main.py裡的new函數,也做相應的調整:

pygame-KidsCanCode系列jumpy-part12-platform圖檔
pygame-KidsCanCode系列jumpy-part12-platform圖檔

main.py中的update函數裡,最後再調整一下:

pygame-KidsCanCode系列jumpy-part12-platform圖檔
pygame-KidsCanCode系列jumpy-part12-platform圖檔

跑起來看看,基本效果出來了,難看的矩形終于沒有了,但是仔細觀察下,漏洞百出,比如下面這些:

問題1:跳闆太靠右,邊界跑到螢幕外了

pygame-KidsCanCode系列jumpy-part12-platform圖檔

修複方法:

檢測下platform的right值,如果超出邊界,向左挪一點

pygame-KidsCanCode系列jumpy-part12-platform圖檔
pygame-KidsCanCode系列jumpy-part12-platform圖檔

問題二:platform把player執行個體給擋住了

類似photoshop的圖層一樣,pygame裡也有layer的概念,最後繪制的對象,預設在最上層

pygame-KidsCanCode系列jumpy-part12-platform圖檔

修複方法:main.py的draw函數,在最後,強制再繪制一次player(tips: 其實有更好的辦法,利用圖層概念,可參考part17部分)

pygame-KidsCanCode系列jumpy-part12-platform圖檔
pygame-KidsCanCode系列jumpy-part12-platform圖檔

問題三:跳闆疊在一起

pygame-KidsCanCode系列jumpy-part12-platform圖檔

解決方法:

思路:随機生成的新跳闆,先不急着加入self.platforms,而是運用碰撞檢測原理,與現有跳闆做碰撞檢測(疊在一起,肯定就碰撞上了),如果碰撞了,就扔掉(pygame下一幀會重新生成,如此循環,直到滿足條件的跳闆加入)

pygame-KidsCanCode系列jumpy-part12-platform圖檔
pygame-KidsCanCode系列jumpy-part12-platform圖檔

問題四: player已經超過了螢幕頂端,但是螢幕并沒有向上滾動,這樣玩家就無法看到頭頂的新跳闆。

pygame-KidsCanCode系列jumpy-part12-platform圖檔

解決辦法:

先來分析下main.py中update函數中的滾動處理

如果player的y軸速度為0,abs函數算出來的值為0,是以跳闆與兔子的y坐标值并不會動(也就是螢幕無法滾動),改進為下面這樣:

pygame-KidsCanCode系列jumpy-part12-platform圖檔
pygame-KidsCanCode系列jumpy-part12-platform圖檔

修複了上面這一堆bug後,再來運作下:

pygame-KidsCanCode系列jumpy-part12-platform圖檔

源碼: https://github.com/yjmyzz/kids-can-code/tree/master/part_12

作者:菩提樹下的楊過

本文版權歸作者,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。