2012-04-28 15 views
6

ドキュメントやさまざまなチュートリアルのサイトを精査しても、四角形の境界ボックスの衝突検出以外の方法でsprite.collideメソッドを変更する方法については頭を悩めることができません。Pygameのグループコリジョンメソッドとサークルベースの衝突をどうやって使用しますか?

私はスプライト「フック」と呼ばれるスプライトグループに保存されている魚の数のいずれかの間の衝突を検出する「fishies」

私が使用することができますする必要があるプログラムがあります。

for hit in pygame.sprite.spritecollide(self, self.fishies) 

境界矩形を使用して衝突するスプライトのリストを返すが、円またはマスクを使用したい。

ドキュメントは、私が使用することができます言う: "衝突"

pygame.sprite.spritecollide(self, self.fishies, False, collided = None) 

は、コールバック関数です。しかし、私はそれが意味するものを解決することはできません。簡単に書いてください:

pygame.sprite.spritecollide(sprite, group, dokill, pygame.sprite.collide_circle()) 

エラーが発生します。

どのように助けてもらえますか、それともそれが正常に動作すると誤解されていますか?

答えて

4

私はほとんどあなたがそれを持っていると思う - 問題はあなたがcollide_circle関数を渡す代わりに呼び出すことです。

pygame.sprite.spritecollide(hook, fish, False, pygame.sprite.collide_circle) 

括弧が欠けている点のみが異なります。 Pythonがcollidedパラメータに必要なのは、2つのスプライトを取り、それらが衝突したかどうかを示すブール値を返す関数です。したがって、2つのスプライトを衝突させる関数を渡すことができます。

+0

ありがとうございます! –

関連する問題