2012-04-28 17 views
6

Belgeleri ve çeşitli eğitici siteleri inceledikten sonra, kafamı dikdörtgensel sınırlayıcı çarpışma algılaması dışındaki herhangi bir şeyle değiştirerek sprite.collide yöntemini değiştiremiyorum.Pygame'de grup çarpışma yöntemleriyle daire tabanlı çarpmayı nasıl kullanıyorsunuz?

Bir peri "Hook" adlı bir peri grubunda depolanan balık dizi birinde arasındaki çarpışma tespit "FISHIES"

kullanabileceğim gereken bir program var:

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

sınırlayıcı dikdörtgenler kullanarak çarpışan spriteların bir listesini döndürmek için, ancak daireler veya maskeler kullanmak istiyorum.

belgeleri kullanabilir miyim diyor ki: "çarpıştı"

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

bir geri çağırma işlevidir. Ama bunun ne anlama geldiğini bilemem. Sadece yazım:

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

bir hata üretir.

Herkesin işe yarayacağı konusunda yardımcı olabilir mi, yoksa yanlış anlaşılmış mıyım?

cevap

4

Sanırım neredeyse her şeye sahipsin - sorun, işlevin kendisini geçmek yerine collide_circle'u arıyor. Böyle bir şey deneyin:

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

Tek fark parantez eksikliğidir. collided parametresi için hangi pygame'in gerekli olduğu iki sprite alıp çarpışıp çakışmadıklarını belirten bir boole döndüren bir işlevdir, böylece iki sprite, hatta özel olana çarpan herhangi bir işlevi iletebilirsiniz.

+0

Bu işe yarıyor, teşekkürler! –