2011-10-06 11 views
6

कोकोस 2 डी आधारित प्रोजेक्ट के लिए, मैं केवल टकराव का पता लगाने के लिए भौतिकी टूलकिट का उपयोग करना चाहता हूं। चिपमंक या Box2d का उपयोग करने के पेशेवर/विपक्ष क्या हैं?केवल टकराव का पता लगाने के लिए, चिपमंक या Box2d बेहतर उपकरण है?

+0

यदि आप भौतिकी को संभालना नहीं चाहते हैं, तो ऐसा करने के लिए एक संपूर्ण लाइब्रेरी क्यों शामिल करें? – alex

+0

जबकि मुझे भौतिकी की आवश्यकता नहीं है, मैं टक्कर पहचान प्रणाली का उपयोग करना आसान बनाना चाहता हूं, इसलिए मुझे अपना खुद लिखना नहीं है। टूलकिट समेत एक समस्या बहुत अधिक नहीं होनी चाहिए। –

+3

काफी व्यक्तिपरक प्रश्न, 'बेहतर' वह वह है जिसे आप सबसे तेज़ी से सीख सकते हैं और सर्वोत्तम समझ सकते हैं। –

उत्तर

4

हम किस तरह के टकराव के बारे में बात कर रहे हैं?

आप सभी की जरूरत इन कर रहे हैं:

  • रेक्ट रेक्ट काटती है -> CGRectIntersectsRect (..) रेक्ट में
  • बिंदु -> (दोनों में से यानी दूरी CGRectContainsPoint (..)
  • त्रिज्या एक दूसरे को काटना अंक) -> सीसीपीडिस्टेंस (..)

तब आपको भौतिकी इंजन की आवश्यकता नहीं है, और आपको अपनी टकराव पहचान एल्गोरिदम भी लिखना नहीं है।

चिपमंक और बॉक्स 2 डी संभाल टकराव समान रूप से अच्छी तरह से। मेरा मानना ​​है कि अगर कोई "बेहतर है" पूछ रहा है तो यह आपके लिए कोई फर्क नहीं पड़ता है। इसके बजाय, खुद से पूछें कि क्या आप सी (चिपमंक) या सी ++ (बॉक्स 2 डी) के साथ काम करने में अधिक आरामदायक हैं।

इसी प्रकार, क्या आप object-oriented, verbose API (Box2D) या functional, highly abbreviated API (चिपमंक) के साथ काम करना पसंद करते हैं?

कुछ निर्णय, अनिर्धारित, और अत्यधिक व्यक्तिपरक विचारों के बजाय आपके लिए काम करना आसान बनाता है, चाहे एक भौतिकी इंजन दूसरे से बेहतर हो, क्योंकि तकनीकी मतभेद मामूली हैं और आप केवल यदि आप दोनों अपने स्वयं के गेम डिज़ाइन और भौतिकी इंजन आंतरिक एल्गोरिदम वास्तव में अच्छी तरह जानते हैं तो अपने गेम के डिज़ाइन पर उनके प्रभाव का आकलन करें।

+1

मैंने हाल ही में एक गेम में ऐसा किया था और मैं इसकी बिल्कुल सिफारिश नहीं करता। Cocos2D में गेम सेंटर लॉगिन अधिसूचना या किसी भी आईओएस 5 सिस्टम अधिसूचना जैसे ओवरले दृश्यों के साथ गंभीर समस्याएं हैं, जहां आपकी अपडेट विधि कुछ फ्रेम छोड़ देती है, जिसके परिणामस्वरूप एंडी ने अपने जवाब में वर्णित "सुरंग" प्रभाव कभी-कभी किया। जब तक आपके पास धीरे-धीरे बड़ी वस्तुएं नहीं बढ़ती हैं, तो आपको एक भौतिकी इंजन का उपयोग सभ्य टकराव का पता लगाने के साथ करना चाहिए। Cocos2D मामले में Box2D का उपयोग करना शायद सबसे अच्छा है। –

9

this answerके अनुसार चिपमंक निरंतर टकराव का पता लगाने का समर्थन नहीं करता है, लेकिन Box2D करता है। यह "सुरंग" को रोकने के लिए महत्वपूर्ण है (वस्तुओं eachother के माध्यम से थोड़ा गुजर जब उच्च गति पर चलती)

यह उनकी Box2D vs Chipmunk FAQ पर स्टीफन Itterheim की टिप्पणी से स्पष्ट किया जाता है: आप करने जा रहे हैं तो बहुत तेजी से भौतिकी वस्तुओं, जैसे आगे बढ़ "बुलेट्स", बॉक्स 2 डी का उपयोग करने पर विचार करें क्योंकि यह तेजी से चलती वस्तुओं को गहराई से घुसना या यहां तक ​​कि अन्य वस्तुओं के माध्यम से सुरंग से रोकने के लिए टकराव टकराव उर्फ ​​निरंतर टकराव एकीकरण कर सकता है।

Chipmunk Collision Detection डॉक्स separate() कॉलबैक के बारे में बात करते हैं। दो आकार इस चरण को पहली बार छूने से रोक चुके हैं। लेकिन यह स्पष्ट नहीं था कि अगर गति से टकराव का पता लगाने की उनकी क्षमता का कोई प्रभाव पड़ता है।

वहाँ भी ब्रेकआउट खेल मेरे वर्तमान खेल Box2D उपयोग कर रहा है के लिए Box2D का उपयोग करने पर एक very negative opinion है, और मैं मैं इसके साथ चिपमंक इस्तेमाल किया इच्छा ... ज्यादातर क्योंकि Box2D दो गंभीर मुद्दों, कि मेरे खेल पर विकट हो रहे हैं: सबसे पहले, यह वास्तव में पुरानी बग है जहां वस्तुओं को कोनों पर "स्नैग" किया जाता है, मेरा गेम ब्रेकआउट गेम होता है, इसलिए जब गेंद दीवार के साथ "रोलिंग" होती है, तो कभी-कभी यह घबराती है और दीवार से दूर हो जाती है, बहुत से लोगों ने पूछा क्यों मेरा खेल भौतिकी "यादृच्छिक" दिखता है।

निष्कर्ष: मैं भी उलझन में हूं।

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