2013-02-20 52 views
11

मैं एंड्रॉइड गेम डेवलपमेंट में नया हूं और मैंने libgdx ShapeRenderer के साथ शुरुआत करने के बाद और थोड़ा और खोज किया, अगर मैं दाहिने पैर से शुरू हुआ तो मैं उलझन में आया।लिबडक्स में आकार ट्रांसफरर, मेष + स्प्राइटबैच, बॉक्स 2 डी और सीन 2 डी का उपयोग कब करें?

तो, मैं वास्तव में जानना चाहता हूं कि मुझे कब आकार देने वाला, मेष + स्प्राइटबैच, बॉक्स 2 डी और सीन 2 डी का उपयोग करना चाहिए।

उत्तर

25

लिबडडीएक्स में प्रतिपादन के लिए काफी सारे (ज्यादातर ऑर्थोगोनल) एपीआई हैं। मैं अभी भी उनमें से कई के आसपास अपना रास्ता सीख रहा हूं, लेकिन मैं विभिन्न हिस्सों का एक सिंहावलोकन दे सकता हूं।

ShapeRenderer आपको स्क्रीन पर मूल फ्लैट-रंग वाले बहुभुज और रेखाओं को तेज़ी से और आसानी से रखता है। यह विशेष रूप से कुशल नहीं है (यह प्रत्येक प्रस्तुत करने पर बहुत सारे कशेरुक डेटा अपलोड करता है)। लेकिन यह जाने के लिए बहुत जल्दी हो सकता है। यह दृढ़ता से स्क्रीन पर केंद्रित है (यह पूर्ण स्क्रीन पर एक ऑर्थोग्राफिक परियोजना के लिए डिफ़ॉल्ट है और इसकी इकाइयां आम तौर पर पिक्सेल हैं)।

Mesh वर्ग आप ज्यामिति पर अधिक प्रत्यक्ष नियंत्रण देता है, लेकिन आप (सभी एक ही नाव सरणी में तैरता के रूप में रंग एन्कोडिंग और शिखर डेटा, रंग डेटा, और बनावट डेटा भंडारण जैसे विवरण के और अधिक एक बहुत से अवगत कराया रहे हैं , और सूचकांक सरणी की अवधारणा)।

SpriteBatch "sprites" (आमतौर पर आयताकार क्षेत्रों में उनमें बनावट) के आसपास उन्मुख है। यह मेष के साथ बनावट की कुछ जटिलता (और लचीलापन) छुपाता है।

बॉक्स 2 डी भौतिकी मॉडलिंग के लिए है, और आपके द्वारा उल्लिखित अन्य एपीआई भागों की तरह नहीं है (जो ज्यादातर प्रतिपादन के बारे में हैं)।

अंत में, Scene2D अधिकतर एनिमेटेड उपयोगकर्ता-इंटरफेस तत्वों जैसे बटन, सूचियां और स्लाइडर्स बनाने के बारे में है। लेकिन इसके शक्तिशाली पर्याप्त (और एनिमेशन और इंटरैक्शन घटनाओं के लिए पर्याप्त साफ और लचीला समर्थन है) कि आप इसमें बहुत सारे "गेम" को भी लागू कर सकते हैं।

आप कच्चे "ओपनजीएल" कमांड का भी उपयोग कर सकते हैं (GL20 देखें) भी।

आप पूरी तरह से मिश्रण-एवं-मिलान कर सकते हैं इन विभिन्न पुरातन (एक चेतावनी है कि आप आम तौर पर "फ्लश" चाहिए और "अंत" जो कुछ भी ShapeRenderer/SpriteBatch/Mesh एक अलग स्वाद शुरू करने से पहले प्रस्तुत करना है)। इसलिए, उदाहरण के लिए, आप अपने गेम के मूल को प्रस्तुत करने के लिए अपने "मुख्य मेनू" और आपके गेम में कुछ मेटा क्रियाओं, SpriteBatch के लिए Scene2D का उपयोग कर सकते हैं और डीबग ओवरले उत्पन्न करने के लिए ShapeRenderer का उपयोग कर सकते हैं (बाध्यकारी बक्से को कल्पना करना आदि)।

यह भी ध्यान रखें कि अधिकांश libGDX 2 डी की ओर तैयार है। कच्चे OpenGL और Mesh एपीआई का उपयोग 3 डी ऑब्जेक्ट्स बनाने के लिए भी किया जा सकता है।

जांचें कि यह Mesh, ओपनजीएल, और SpriteBatch का उपयोग कैसे करता है। (मुझे लगता है कि यह उदाहरण पूर्व-दिनांक Scene2d है, इसलिए इसमें से कोई भी नहीं है ...)। इन वर्गों के कार्यान्वयन को देखने के लिए यह भी सार्थक है कि वे कवर के नीचे क्या कर रहे हैं।

+0

हम्म, धन्यवाद। अब मैं अंतर देखता हूं =)। सिर्फ एक आखिरी सवाल: टकराव का पता लगाने के लिए क्या बेहतर है? Box2D, इंटरसेक्टर या कोई अन्य जिसे मैं नहीं जानता? –

+1

'इंटरसेक्टर' में आपके पास टकराव का पता लगाने के लिए आवश्यक सभी टूल्स हैं। Box2D टकराव का पता लगाएगा, लेकिन यह एक पूर्ण 2 डी भौतिकी सिमुलेशन है, इसलिए यह बहुत कुछ करता है। यदि आप दुश्मनों (या फर्श वाले खिलाड़ियों) के साथ गोलियों को छेड़छाड़ कर रहे हैं, तो आप खुद को रोल करने से बेहतर संभावनाएं हैं। –

+0

@ पीटी।अपने आप को रोल करना इतना आसान नहीं हो सकता है जब आपको लगातार एन बुलेट्स और एम दुश्मनों के बीच टकराव की जांच करनी चाहिए, जब ये संख्याएं छोटी नहीं हैं ... और सही ढंग से फर्श और दीवारों के साथ खिलाड़ी आंदोलन को अवरुद्ध करना भी सही नहीं है। –