2012-04-28 14 views
6

प्रलेखन और विभिन्न ट्यूटोरियल साइटों को खराब करने के बाद, मैं अभी भी आयताकार बाउंडिंग-बॉक्स टक्कर पहचान के अलावा किसी अन्य चीज़ के साथ sprite.collide विधि को संशोधित करने के तरीके के आसपास अपना सिर नहीं प्राप्त कर सकता।आप Pygame में समूह टकराव विधियों के साथ सर्कल-आधारित टकराव का उपयोग कैसे करते हैं?

मैं एक प्रोग्राम है जो एक स्प्राइट "हुक" और मछली की एक संख्या में से किसी एक, स्प्राइट समूह में संग्रहीत कहा जाता है के बीच टक्कर का पता लगाने "fishies"

मैं उपयोग कर सकते हैं की जरूरत है है:

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

बाध्य आयताकारों का उपयोग करके टकराव sprites की एक सूची वापस करने के लिए, लेकिन मैं सर्कल या मास्क का उपयोग करना चाहता हूँ।

प्रलेखन कहता है कि मैं का उपयोग कर सकते हैं:

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) 

फर्क सिर्फ इतना है कोष्ठकों की कमी है। collided पैरामीटर के लिए क्या प्यगम की आवश्यकता है एक ऐसा फ़ंक्शन होता है जो दो sprites लेता है और एक बूलियन देता है जो इंगित करता है कि वे टकराए हैं या नहीं, ताकि आप दो स्प्राइट्स, यहां तक ​​कि कस्टम एक को टक्कर मारने वाले किसी भी फ़ंक्शन को पास कर सकें।

+0

यह काम करता है, धन्यवाद! –

संबंधित मुद्दे