Heim > Backend-Entwicklung > Python-Tutorial > Wie erkennt und handhabt man Bullet-Sprite-Kollisionen in Pygame?

Wie erkennt und handhabt man Bullet-Sprite-Kollisionen in Pygame?

Susan Sarandon
Freigeben: 2024-12-28 19:42:10
Original
449 Leute haben es durchsucht

How to Detect and Handle Bullet-Sprite Collisions in Pygame?

Wie erkenne ich Kollisionen zwischen Kugeln und Sprites in PyGame?

In PyGame kann man Kollisionen mithilfe von pygame.Rect-Objekten erkennen. Rechteckobjekte umfassen viele Methoden zum Erkennen von Kollisionen zwischen zwei Objekten, sogar Kollisionen zwischen rechteckigen und kreisförmigen Objekten.

Einige Beispiele:

  1. pygame.Rect.collidepoint: Testet, ob ein Punkt innerhalb von a liegt Rechteck.

    • repl.it/@Rabbid76/PyGame-collidepoint
    • [Bild](https://i.sstatic.net/5jD 0C.png)
    • [Gif](https://i.sstatic.net/wCi2z.gif)
  2. pygame.Rect. colliderect : Testet, ob zwei Rechtecke vorhanden sind Überlappung.

    • repl.it/@Rabbid76/PyGame-colliderect
    • [Bild](https://i.sst atic.net/5jD0C.png)
    • [Gif](https://i.sstatic.net/r2y9r.gif)

Für Bei Kollisionen zwischen pygame.sprite.Sprite- und pygame.sprite.Group-Objekten kann man pygame.sprite.spritecollide(), pygame.sprite.groupcollide() oder pygame.sprite.spritecollideany() verwenden. Bei Verwendung dieser Methoden kann der Kollisionserkennungsalgorithmus durch das Argument collided angegeben werden:

Das Argument collided ist eine Rückruffunktion, mit der berechnet wird, ob zwei Sprites kollidieren.

Mögliche kollidierte Parameter sind collide_rect, collide_rect_ratio, collide_circle, collide_circle_ratio, collide_mask.

Einige Beispiele:

  1. pygame.sprite.spritecollide():

    • repl.it/@Rabbid76/PyGame-spritecollide
    • [Bild](ht tps://i.sstatic.net/5jD0C.png)
    • [Gif](https://i.sstatic.net/3DdjL.gif)
  2. pygame.sprite.spritecollide() / collide_circle:

    • repl.it/@Rabbid76/PyGame-spritecollidecollidecircle
    • [Bild]( https://i.sstatic.net/5jD0C.png)
    • [Gif](https://i.sstatic.net/SS1Pb.gif)

In In Ihrem speziellen Fall können Sie pygame.sprite.spritecollide() und pygame.sprite.Group:

# [...]

my_sprite = Sprite(sx, sy, name)
my_bullet = Bullet(by, by)

bullet_group = pygame.sprite.Group(my_bullet)
sprite_group = pygame.sprite.Group(my_sprite)

while True:
    # [...]

    collisions = pygame.sprite.spritecollide(my_bullet, sprite_group, True)

    for sprite in collisions:
        sprite_group.remove(sprite)
Nach dem Login kopieren
verwenden, um eine Kollision zwischen einem Aufzählungszeichen und einem Sprite zu erkennen und sowohl das Sprite als auch das Aufzählungszeichen zu löschen

Das obige ist der detaillierte Inhalt vonWie erkennt und handhabt man Bullet-Sprite-Kollisionen in Pygame?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage