Rumah > pembangunan bahagian belakang > Tutorial Python > Bagaimana untuk Mengesan dan Mengendalikan Perlanggaran Peluru-Sprite dalam Pygame?

Bagaimana untuk Mengesan dan Mengendalikan Perlanggaran Peluru-Sprite dalam Pygame?

Susan Sarandon
Lepaskan: 2024-12-28 19:42:10
asal
460 orang telah melayarinya

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

Bagaimanakah cara saya mengesan perlanggaran antara peluru dan sprite dalam PyGame?

Dalam PyGame, seseorang boleh mengesan perlanggaran menggunakan objek pygame.Rect. Objek rect termasuk banyak kaedah untuk mengesan perlanggaran antara dua objek, malah perlanggaran antara objek segi empat tepat dan bulat.

Beberapa contoh:

  1. pygame.Rect.collidepoint: Menguji jika titik berada di dalam a segi empat tepat.

    • repl.it/@Rabbid76/PyGame-collidepoint
    • [Imej](https://i.sstatic.net/5jD 0C.png)
    • [Gif](https://i.sstatic.net/wCi2z.gif)
  2. pygame.Rect. colliderect : Menguji jika dua segi empat tepat bertindih.

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

Untuk perlanggaran antara objek pygame.sprite.Sprite dan pygame.sprite.Group, seseorang boleh menggunakan pygame.sprite.spritecollide(), pygame.sprite.groupcollide() atau pygame.sprite.spritecollideany(). Apabila menggunakan kaedah ini, algoritma pengesanan perlanggaran boleh ditentukan oleh argumen berlanggar:

Argumen berlanggar ialah fungsi panggil balik yang digunakan untuk mengira jika dua sprite bertembung.

Parameter yang mungkin berlanggar ialah collide_rect, collide_rect_ratio, collide_circle, collide_circle_nisbah, collide_mask.

Beberapa contoh:

  1. pygame.sprite.spritecollide():

    • repl.it/@Rabbid76/PyGame-spritecollide
    • [Imej](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
    • [Imej]( https://i.sstatic.net/5jD0C.png)
    • [Gif](https://i.sstatic.net/SS1Pb.gif)

Dalam kes khusus anda, untuk mengesan perlanggaran antara peluru dan sprite dan memadam kedua-dua sprite dan peluru, anda boleh menggunakan pygame.sprite.spritecollide() dan 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)
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Mengesan dan Mengendalikan Perlanggaran Peluru-Sprite dalam Pygame?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan