Pygame で衝突を検出する

Maxim Maeder 2023年6月21日
  1. Pygame で rect.collidepoint() を使用して衝突を検出する
  2. Pygame で rect.colliderect() を使用して衝突を検出する
  3. Pygame で rect.collidelist() または rect.collidelistall() を使用して衝突を検出する
  4. Pygame で rect.collidedict() または rect.collidedictall() を使用して衝突を検出する
Pygame で衝突を検出する

Pygame で衝突を検出する方法はいくつかあり、この記事ではそのいくつかを取り上げます。

ここに表示されるコードは、有効な Pygame ウィンドウの完全なコードではありません。 必要最小限のフレームワークに興味がある場合は、この 記事 を参照してください。

Pygame で rect.collidepoint() を使用して衝突を検出する

rect クラスの collidepoint() メソッドを使用すると、指定した点が rect 内にあるかどうかをテストできます。 これは多くの場合に役立ちます。たとえば、一部の UI 要素にカーソルを合わせたときに外観を変更したい場合などです。

この記事では、機能について説明し、それを使用してボタンを作成しました。 関数に xy 座標を別々に提供するか、タプルやリストのような iterable で提供することができます。

構文:

rect.collidepoint(x, y)
rect.collidepoint((x, y))

Pygame で rect.colliderect() を使用して衝突を検出する

rect クラスのこの関数を使用して、別の rect の一部がその範囲内にあるかどうかをテストできます。 したがって、この関数に別の rect を指定する必要があります。

構文:

rect.colliderect(rect)

Pygame で rect.collidelist() または rect.collidelistall() を使用して衝突を検出する

rect.collidelist() メソッドを使用することもできます。このメソッドは、rects のリストを受け取り、メインの rect と交差するかどうかをテストします。 この関数は、rect と衝突する最初の rect インデックスを返します。

rect.collidelistall() メソッドは似ていますが、重要な違いが 1つだけあります: メインの rect と衝突する rects のすべてのインデックスを含む配列を返します。

構文:

rect.collidelist([rect1, rect2, ...])

rect.collidelistall([rect1, rect2, ...])

Pygame で rect.collidedict() または rect.collidedictall() を使用して衝突を検出する

これらのメソッドは上記のメソッドとほぼ同じですが、メインの rect と衝突する rects のキーと値のペアを返します。

構文:

rect.collidedict({
    'rect1': rect1,
    'rect2': rect2,
    ...
})

rect.collidedictall({
    'rect1': rect1,
    'rect2': rect2,
    ...
})
著者: Maxim Maeder
Maxim Maeder avatar Maxim Maeder avatar

Hi, my name is Maxim Maeder, I am a young programming enthusiast looking to have fun coding and teaching you some things about programming.

GitHub