首頁 >後端開發 >Python教學 >為什麼我的 Pygame 碰撞偵測總是回傳 True,為什麼我的影像位置總是 (0, 0)?

為什麼我的 Pygame 碰撞偵測總是回傳 True,為什麼我的影像位置總是 (0, 0)?

Patricia Arquette
Patricia Arquette原創
2024-12-26 08:17:18236瀏覽

Why Does My Pygame Collision Detection Always Return True, and Why Is My Image Position Always (0, 0)?

Pygame 中的碰撞偵測與影像定位故障排除

碰撞偵測問題:總是傳回「True」

碰撞偵測問題:總是傳回「True」

其中之一碰撞檢測函數在不應該傳回“True”時傳回“True”的最常見原因是使用了錯誤的座標資訊。在您的程式碼中,球和障礙物精靈具有額外的 x 和 y 屬性,但 Surface 物件的 get_rect() 方法不會根據這些屬性自動更新其位置。

解決方案:

self.rect = self.image.get_rect(topleft=(self.x, self.y))

要解決此問題,您應該在呼叫時使用topleft 關鍵字參數手動設定矩形的位置get_rect():

影像定位問題:始終回傳(0, 0)

預設情況下,Surface 物件的座標總是設定為 ( 0, 0),無論它顯示在螢幕上的哪個位置。將影像傳輸到遊戲顯示器時,您需要提供要繪製影像的正確座標。

解決方案:

gameDisplay.blit(self.image, self.rect)

您只需使用座標即可blitting 映像時儲存在rect 屬性中:

    附加提示:
  • 使用pygame.sprite.Group 來管理精靈。它簡化了繪製和碰撞檢測。
  • 避免對精靈使用額外的 x 和 y 屬性。相反,依靠矩形的位置來獲取位置資訊。
徹底檢查文件以了解 get_rect() 等函數,以了解它們的行為和要求。

以上是為什麼我的 Pygame 碰撞偵測總是回傳 True,為什麼我的影像位置總是 (0, 0)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn