PyGame で弾丸とスプライト間の衝突を検出するにはどうすればよいですか?
PyGame では、pygame.Rect オブジェクトを使用して衝突を検出できます。 Rect オブジェクトには、2 つのオブジェクト間の衝突、さらには長方形と円形のオブジェクト間の衝突を検出するためのメソッドが多数含まれています。
いくつかの例:
pygame.Rect.collidepoint: ポイントが内部にあるかどうかをテストします。 Rectangle.
pygame.Rect.衝突 : 2 つの長方形かどうかをテストします。オーバーラップ。
用pygame.sprite.Sprite オブジェクトと pygame.sprite.Group オブジェクト間の衝突には、pygame.sprite.spritecollide()、pygame.sprite.groupcollide()、または pygame.sprite.spritecollideany() を使用できます。これらのメソッドを使用する場合、衝突検出アルゴリズムは、collided 引数によって指定できます。
collided 引数は、2 つのスプライトが衝突しているかどうかを計算するために使用されるコールバック関数です。
衝突可能なパラメータは、collide_rect、collide_rect_ratio、collide_circle、 collide_circle_ratio、collide_mask.
一部例:
pygame.sprite.spritecollide():
pygame.sprite.spritecollide() / collide_circle:
で特定のケースでは、弾丸とスプライトの間の衝突を検出し、スプライトと弾丸の両方を削除するには、pygame.sprite.spritecollide() と 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)
以上がPygame で弾丸とスプライトの衝突を検出して処理する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。