簡體   English   中英

Pygame Platformer碰撞檢測不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM