Kollisionen in Pygame erkennen

Maxim Maeder 21 Juni 2023
  1. Kollisionen mit rect.collidepoint() in Pygame erkennen
  2. Kollisionen mit rect.colliderect() in Pygame erkennen
  3. Kollisionen erkennen mit rect.collidelist() oder rect.collidelistall() in Pygame
  4. Kollisionen erkennen mit rect.collidedict() oder rect.collidedictall() in Pygame
Kollisionen in Pygame erkennen

Es gibt verschiedene Möglichkeiten, Kollisionen in Pygame zu erkennen, und dieser Artikel wird einige davon behandeln.

Der hier angezeigte Code ist nicht der vollständige Code für ein gültiges Pygame-Fenster. Wenn Sie an einem Bare-Bones-Framework interessiert sind, lesen Sie diesen Artikel.

Kollisionen mit rect.collidepoint() in Pygame erkennen

Mit der Methode collidepoint() der Klasse rect können wir testen, ob sich ein bestimmter Punkt innerhalb des rect befindet. Dies ist bei vielen Gelegenheiten nützlich, beispielsweise wenn Sie möchten, dass einige UI-Elemente das Aussehen ändern, wenn Sie mit der Maus darüber fahren.

In diesem Artikel haben wir die Funktion besprochen und einen Button damit gemacht. Sie können die Funktion entweder separat mit der Koordinate x und y versorgen oder sie iterierbar wie ein Tupel oder eine Liste bereitstellen.

Syntax:

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

Kollisionen mit rect.colliderect() in Pygame erkennen

Mit dieser Funktion der Klasse rect können wir testen, ob irgendein Teil eines anderen rect innerhalb seiner Grenzen liegt. Daher müssen wir diese Funktion mit einem weiteren rect versorgen.

Syntax:

rect.colliderect(rect)

Kollisionen erkennen mit rect.collidelist() oder rect.collidelistall() in Pygame

Wir können auch die Methode rect.collidelist() verwenden, die eine Liste von rects erhält und testet, ob sich eines mit dem Haupt-rect schneidet. Diese Funktion gibt den ersten rect-Index zurück, der mit dem rect kollidiert.

Die Methode rect.collidelistall() ist ähnlich und hat nur einen wesentlichen Unterschied: Sie gibt ein Array mit allen Indizes von rects zurück, die mit dem Haupt- rect kollidieren.

Syntax:

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

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

Kollisionen erkennen mit rect.collidedict() oder rect.collidedictall() in Pygame

Diese Methoden sind ziemlich identisch mit den obigen Methoden, aber sie geben das Schlüssel-Wert-Paar von rects zurück, das mit dem Haupt rect kollidiert.

Syntax:

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

rect.collidedictall({
    'rect1': rect1,
    'rect2': rect2,
    ...
})
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