ホームページ >バックエンド開発 >Python チュートリアル >Pygame の衝突検出が常に True を返すのはなぜですか?また、画像の位置が常に (0, 0) になるのはなぜですか?
衝突検出の問題: 常に 'True' を返す
次のいずれか衝突検出関数が「True」を返す最も一般的な理由間違った座標情報を使用してはなりません。コードでは、Ball スプライトと Obstacle スプライトには追加の x 属性と y 属性がありますが、Surface オブジェクトの get_rect() メソッドはこれらの属性に基づいてその位置を自動的に更新しません。解決策:
この問題を解決するには、呼び出し時に topleft キーワード引数を使用して四角形の位置を手動で設定する必要があります。 get_rect():self.rect = self.image.get_rect(topleft=(self.x, self.y))
画像の位置の問題: 常に (0, 0) を返すデフォルトでは、Surface オブジェクトの座標は常に ( 0, 0)、画面上のどこに表示されるかに関係なく。ゲーム ディスプレイに画像をブリットするときは、画像を描画する場所に正しい座標を指定する必要があります。
解決策:単純に座標を使用できます。画像をブリッティングするときに、rect 属性に保存されます:
gameDisplay.blit(self.image, self.rect)追加ヒント:
スプライトを管理するには、pygame.sprite.Group を使用します。これにより、描画と衝突検出が簡素化されます。
以上がPygame の衝突検出が常に True を返すのはなぜですか?また、画像の位置が常に (0, 0) になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。