[英]Pygame platformer collision detection not working
我正在嘗試對我的平台游戲進行碰撞檢測。 當我嘗試運行游戲時,我只是掉在平台上,而不是在玩家點擊游戲時停下來。 任何幫助或建議,將不勝感激。 我的完整代碼可以在這里找到
def collision_detect(self,x1,y1,platform):
#Stops the player from falling once they hit the platform by setting falling to false
if self.x > platform.x and self.x < platform.x2:
if self.y == platform.y:
self.yVel += 0
在邏輯和實現方面存在一些錯誤。
在您的collision_detect
您說自己將下降狀態更改為false,但從未這樣做。 另外,您在檢查之前將其設置為true。 但是首先請看我的其他觀點。
玩家不應處於“掉落”或“不掉落”狀態。 重力總是在那,所以玩家總是在跌倒。 如果有一個平台可以阻止它,那么速度會降為0,僅此而已。 就像您實際上要摔倒一樣,但是地板會阻止您。
您不應該檢查self.y == platform.y
,因為如果將y坐標增加2或3,則可能會“跳過”確切的坐標,因此您真正想要的是self.y >= platform.y
。
您可以完全刪除gravity
方法,而僅使用collision_detect
方法。
像這樣:
def collision_detect(self, platform):
if self.x > platform.x and self.x < platform.x2:
if self.y >= platform.y:
self.yVel = 0
else:
self.yVel = 5
在do
函數中嘗試使用諸如self.collision_detect(platform(0, 500, 800, 20))
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.