簡體   English   中英

為什么我在 python 中的碰撞檢測不起作用?

[英]Why won't my collision detection in python work?

我目前正在嘗試為我的一個班級制作一個簡單的空氣曲棍球比賽。 我正在努力做到這一點,因此目標不會構成屏幕的整個側面,而只是其中的一小部分。 因此,當冰球擊中屏幕的不是目標的一側時,它會彈開並繼續比賽。 但由於某種原因,冰球只是穿過屏幕的一側,游戲並沒有重置。 如果這是一個愚蠢的問題或者描述性不夠,我很抱歉這是我第一次這樣做。

編碼:

 if(self.puckSquare.left < 0 and self.puckSquare.height > 143 and self.puckSquare.height < 310):
        self.gameLoop = False
        self.rightScore += 1
        print("Left Player " + str(self.leftScore) +  " Right Player" + str(self.rightScore))
    elif(self.puckSquare.left < 0 and self.puckSquare.height < 143 and self.puckSquare.height > 310):
        self.puckspeedX = -self.puckspeedX

你的elif的邏輯是錯誤的。 您正在檢查您是否在目標的兩側之外,這永遠不會發生。 您需要一個or而不是and來進行height檢查。

elif self.puckSquare.left < 0 and (self.puckSquare.height < 143 or self.puckSquare.height > 310):

或者您可以完全放棄高度檢查,因為您已經在前面的if檢查中測試了目標區域。 你只需要elif來檢查你是否還在碰壁。

elif self.puckSquare.left < 0:

注意: ifelif語句中的條件不需要括號。 其他一些語言可以,但不是 Python。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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