एक ES के साथ और अधिक मज़ा ...
वर्तमान में, मेरे पास कुछ सिस्टम हैं:
- रेंडरर (रेंडर करने योग्य विशेषता, रूपांतरण विशेषता)
- गति (चल विशेषता, ट्रांसफ़ॉर्म विशेषता, रेंडर करने योग्य विशेषता [बाउंडिंग बॉक्स आदि के लिए))
- इनपुट (InputReceiver विशेषता)
- आदि।
मैं टक्कर का पता लगा रहा हूं। मेरा पहला विचार एक नई प्रणाली को जोड़ना था जो टकराव करता है। यह मुझे इस Motionप्रणाली से अलग-थलग रखने के लिए समझ में आता है क्योंकि सभी चीजें जो चलती हैं या एनिमेटेड नहीं हैं वे आवश्यक रूप से टकराव का पता लगाने में भाग लेते हैं - कैमरा, कोहरा, आदि - लेकिन ऐसा लगता है कि Collisionऔर Motionअन्योन्याश्रित हैं।
जब Motionएक इकाई चलती है, तो परिवर्तन को मान्य किया जाना चाहिए Collision, और आंदोलन को या तो रद्द कर दिया गया, या समायोजित किया गया (उछल, दीवार पर रोकना, आदि)।
एक Collidable विशेषता बनाने के लिए एक विकल्प होगा जो टकराव की वस्तु के संदर्भ को बनाए रखता है - kd-tree, octree, इत्यादि जो उन संस्थाओं के बीच साझा किए जाते हैं जो एक दूसरे से टकरा सकते हैं। Motionप्रणाली तो उस विशेषता के लिए चेक करें, और जाँच करें या आंदोलन को समायोजित करने के लिए इसका इस्तेमाल करते हैं।
एक कोड परिप्रेक्ष्य से, यह एक स्वीकार्य समाधान है। हालांकि, ECS वास्तुकला के दृष्टिकोण से, ऐसा लगता है कि यह Motionसिस्टम में तर्क को आगे बढ़ा रहा है जो उन सभी संस्थाओं पर लागू नहीं होता है जिनके पास एक Movableविशेषता है।
मैं भी में एक प्रस्ताव वेक्टर संग्रहीत कर सकती है Movableविशेषता है, और है Colliderप्रणाली को समायोजित Transformके रूप में की जरूरत है, लेकिन यह है कि बीच कार्यक्षमता डुप्लिकेट को शामिल करेंगे Motionऔर Collider, या से एक कॉलबैक Colliderकरने के लिए Motionउछाल / प्रतिबिंब, आदि के लिए टक्कर स्थान और सतह का डेटा बारे में कुछ डेटा के साथ ।
यह "विशेष मामला हैक" के शीर्षक के अंतर्गत आ सकता है, लेकिन मैं उन लोगों से कुछ इनपुट प्राप्त करना चाहता हूं, जिन्होंने एक टन एज केस कोड बनाए बिना इसे संभाला है।
प्रश्न जब गति और टक्कर सिस्टम के बीच तंग युग्मन से बचने का एक अच्छा तरीका है जब ऐसा लगता है कि उन्हें एक दूसरे के ज्ञान की आवश्यकता है?