[英]How do I set a boundary in which my image can go through in Pygame?How do I keep an image from going behind another?
[英]How do I prevent my a sprite from going through an object in pygame?
所以我一直在研究游戲,到目前為止最大的問題是我們無法讓玩家與場地上的任何物體發生碰撞。 相反,它們直接穿過樹。 誰能告訴我為什么? 這是我嘗試用於沖突檢測的代碼:
for tree in treelist:
if self.player.rect.x == tree.rect.x:
self.player.rect.x == self.player.rect.x - 2
if self.player.rect.x == tree.rect.x + tree.rect.width:
self.player.rect.x == self.player.rect.x + 2
if self.player.rect.y == tree.rect.y:
self.player.rect.y == self.player.rect.y - 2
if self.player.rect.y == tree.rect.y + tree.rect.height:
self.player.rect.y == self.player.rect.y + 2
從理論上講這是合理的還是我做錯了?
幾乎合理的理論。 您僅在檢查player
矩形位置是否與tree
矩形位置的邊界完全相同。 這種情況很少發生。 您還需要檢查玩家是否在樹的邊界之間,如下所示:
# check if player is overlapping the tree
if tree.rect.x <= self.player.rect.x <= tree.rect.x + tree.rect.width:
# decide on how to move player away from the tree depending on previous frame
# if player is moving forward, send them backwards from tree
if self.player.rect.prev_x < self.player.rect.x:
self.player.rect.x -= 2
# otherwise send them forwards from tree
else:
self.player.rect.x += 2
重疊檢查和重疊反應的確切邏輯完全取決於您,但是這種事情應該可以解決。 請注意,您將需要跟蹤玩家在前一幀中的位置,否則您將不知道他們從哪個方向擊中樹。 您可以這樣做:
self.player.rect.prev_x = self.player.rect.x
self.player.rect.x += player_velocity
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.