2012-04-28 13 views
6

Po przetrząśnięciu dokumentacji i różnych stron samouczka, nadal nie mogę zrozumieć sposobu, w jaki modyfikujesz metodę sprite.collide z czymkolwiek innym niż wykrywanie kolizji prostokąta.Jak korzystać z kolizji w kolizji z metodami kolizji grup w Pygame?

Mam program, który wymaga do wykrywania kolizji pomiędzy ikonki „Hook” i jednego z wielu ryb, przechowywanego w grupie ikonki o nazwie „rybki”

mogę użyć:

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

, aby zwrócić listę kolizyjnych duszków, używając prostokąty ograniczających, ale chcę użyć okręgów lub masek.

Dokumentacja mówi, że może używać:

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

gdzie "zderzył się" to funkcja zwrotna. Ale nie mogę zrozumieć, co to oznacza. Po prostu pisanie:

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

powoduje błąd.

Czy ktoś może pomóc, czy też źle zrozumiałem, jak to ma działać?

Odpowiedz

4

Myślę, że prawie go masz - problemem jest to, że dzwonisz pod numer collide_circle zamiast przekazywać samą funkcję. Spróbuj czegoś takiego:

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

Jedyna różnica polega na braku nawiasów. Parametr wymagany dla parametru collided to funkcja, która pobiera dwa sprity i zwraca wartość logiczną wskazującą, czy zostały zderzone, czy też nie, więc można przekazać dowolną funkcję, która koliduje z dwoma ikonami, nawet niestandardowymi.

+0

To działa, dziękuję! –

Powiązane problemy