ホームページ > バックエンド開発 > Python チュートリアル > Pygame の衝突検出が常に True を返すのはなぜですか?また、画像の位置が常に (0, 0) になるのはなぜですか?

Pygame の衝突検出が常に True を返すのはなぜですか?また、画像の位置が常に (0, 0) になるのはなぜですか?

Patricia Arquette
リリース: 2024-12-26 08:17:18
オリジナル
223 人が閲覧しました

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

Pygame での衝突検出と画像の配置のトラブルシューティング

衝突検出の問題: 常に '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 を使用します。これにより、描画と衝突検出が簡素化されます。
  • スプライトに追加の x 属性と y 属性を使用することは避けてください。代わりに、位置情報については四角形の位置に依存します。
  • get_rect() などの関数の動作と要件を理解するには、ドキュメントをよく確認してください。

以上がPygame の衝突検出が常に True を返すのはなぜですか?また、画像の位置が常に (0, 0) になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート