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:
pygame.Rect.collidepoint: Menguji jika titik berada di dalam a segi empat tepat.
pygame.Rect. colliderect : Menguji jika dua segi empat tepat bertindih.
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:
pygame.sprite.spritecollide():
pygame.sprite.spritecollide() / collide_circle:
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)
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!