2010-12-13 20 views
15

मैं वर्तमान में 2 डी शूट अप गेम के प्रकार पर काम कर रहा हूं, और मैं अपने टक्कर के विच्छेदन के लिए एक ट्रैक्टर पेड़ का उपयोग कर रहा हूं। मैंने एक कामकाजी क्वाड पेड़ लिखा जो सही ढंग से मेरे कलाकारों को नोड/पत्तियों में पेड़ में रखता है। हालांकि, मुझे कुछ समस्याएं मिली हैं।2 डी टकराव का पता लगाने के लिए क्वाड्री

सबसे पहले, मैं वास्तव में अपने क्वाड्री का उपयोग कैसे करूं ताकि किसी ऑब्जेक्ट को किसी ऑब्जेक्ट को टकराव का परीक्षण करना चाहिए? मैं इस बारे में अनिश्चित हूं कि यह कैसे किया जाता है।

जो एक दूसरा प्रश्न उठाता है। मान लें कि मेरे पास नोड में एक ऑब्जेक्ट है जो किसी अन्य नोड का पड़ोसी नहीं है, लेकिन यह वस्तु काफी बड़ी है कि यह कुछ नोड फैलती है, मैं वास्तविक टकराव की जांच कैसे कर सकता हूं, क्योंकि मुझे लगता है कि पेड़ का अनुमान लगाया जा सकता है कि यह नहीं है "दूर दूर" नोड में वस्तुओं के साथ टकराने के लिए पर्याप्त बंद करें? क्या वस्तुओं को नोड में पूरी तरह से फिट नहीं करना चाहिए माता-पिता नोड में रखा जाना चाहिए?

मेरे खेल में, अधिकांश ऑब्जेक्ट्स अलग-अलग आकार के होते हैं और चारों ओर घूमते हैं।

मैंने क्वाड्रिस के बारे में बड़ी संख्या में ब्लॉग/लेख पढ़े हैं, लेकिन सबसे अधिक बताएं कि एक पेड़ कैसे बनाया जाए जो वास्तव में मैं नहीं ढूंढ रहा हूं।

कोई भी मदद/जानकारी का स्वागत है।

+2

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

+0

टकराव पर निर्भर करता है जो मुझे लगता है ... शायद सर्कल-आधारित टक्कर के लिए, शायद पिक्सेल-आधारित के लिए नहीं। इसके अलावा, एंटरसाइट्स की 1 डी-क्रमबद्ध सूची में पड़ोसियों की तलाश में कम संख्या में ऑब्जेक्ट्स के लिए आमतौर पर सबसे तेज़, आईआईआरसी होता है। लेकिन एक कामकाजी क्वाड्री को लागू करना बेहद अनुभव के लिए लायक है। (और साथ ही, बुलेट नरक-ट्रेंड शूट'एम अप में सैकड़ों चलती वस्तुओं को आसानी से प्राप्त किया जा सकता है :)) – Kos

उत्तर

15

आप एक सम्मेलन स्थापित कर सकते हैं कि प्रत्येक तत्व सबसे छोटे क्वाड्री नोड में निहित है जिसमें यह पूरी तरह से है। प्रत्येक तत्व के साथ सीधे वर्तमान नोड

  • में

    1. वर्तमान नोड = रूट नोड
    2. जांच एक की टक्कर है तो कर सकते हैं:

      फिर जब आप नोड एक के लिए टकराव की जाँच करें, अगर आप इस तरह आगे बढ़ना वर्तमान नोड के किसी भी उप-नोड्स में पूरी तरह से निहित होना चाहिए, उस नोड को वर्तमान नोड सेट करें और

    3. अंत में, वर्तमान नोड के बच्चों के नोड्स में सभी तत्वों के साथ ए के टकराव की जांच करें, पुनरावर्ती ।

    ध्यान दें कि वस्तुओं को छोटा, गहरा वे क्वाड पेड़ में स्थित होंगे, इसलिए उनकी तुलना अक्सर कम की जाएगी।

  • +0

    बीटीडब्ल्यू- यह सम्मेलन जहां * न केवल * पत्तियों में तत्व हो सकते हैं, संभवतः केवल एकमात्र नहीं है- केवल पहला मेरे दिमाग में आता है। आप अन्य रूपों पर ठोकर खा सकते हैं जो अलग-अलग धारणाएं लेते हैं और इसलिए एक अलग दृष्टिकोण की आवश्यकता होती है। – Kos

    +0

    तो मुझे मूल रूप से किसी भी संभावित टकराव के लिए परीक्षण करने के लिए गेम में प्रत्येक ऑब्जेक्ट के लिए उन 4 चरणों को दोहराने की आवश्यकता है? – dotminic

    +2

    हां, सामान्य मामले में। लेकिन आप एक बार में कई पेड़ रख सकते हैं - उदाहरण के लिए गोलियां गोलियों से टकराती नहीं हैं, इसलिए आप गोलियों के लिए अलग-अलग पेड़ भी ले सकते हैं और कह सकते हैं, दुश्मन, और दुश्मन के पेड़ के साथ हर गोली की जांच कर सकते हैं आदि। अपने तर्क की जांच करें और सोचें कि आपको इस संस्करण में वास्तव में कितने पेड़ चाहिए :) – Kos

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