मैं इकाई प्रणालियों के विचार के लिए काफी नया हूं, सामान का एक गुच्छा (सबसे उपयोगी, इस महान ब्लॉग और इस उत्तर ) को पढ़कर ।
यद्यपि मुझे यह समझने में थोड़ी परेशानी हो रही है कि किसी स्रोत की अपरिभाषित संख्या द्वारा किसी वस्तु की स्थिति को सरल बनाने में सक्षम होने के नाते कितना सरल है।
यही है, मेरे पास मेरी इकाई है, जिसमें एक स्थिति घटक है। मेरे पास खेल में कुछ घटना है जो इस इकाई को एक निश्चित समय में एक निश्चित दूरी तय करने के लिए कहती है।
ये घटनाएं किसी भी समय हो सकती हैं, और स्थिति और समय के लिए अलग-अलग मूल्य होंगे। परिणाम यह है कि उन्हें एक साथ जोड़ा जाएगा।
एक पारंपरिक OO समाधान में, मेरे पास कुछ प्रकार की MoveByकक्षा होगी, जिसमें दूरी / समय और मेरे गेम ऑब्जेक्ट क्लास के अंदर की एक सरणी होती है। प्रत्येक फ्रेम, मैं सभी के माध्यम से पुनरावृति करना चाहता हूं MoveBy, और इसे स्थिति पर लागू करता हूं । यदि कोई MoveByअपने अंतिम समय पर पहुंच गया है, तो उसे सरणी से हटा दें।
इकाई प्रणाली के साथ, मैं थोड़ा भ्रमित हूं कि मुझे इस तरह के व्यवहार को कैसे दोहराया जाना चाहिए।
अगर एक समय में इनमें से एक था, तो उन्हें एक साथ संयोजित करने में सक्षम होने के बजाय, यह काफी सीधा होगा (मुझे विश्वास है) और कुछ इस तरह दिखेंगे:
PositionComponent युक्त x, y
MoveByComponent युक्त x, y, time
Entityजिसमें ए PositionComponentऔर ए दोनों हैंMoveByComponent
MoveBySystemजो इन दोनों घटकों के साथ एक इकाई की तलाश करता है, और का मान जोड़ता MoveByComponentहै PositionComponent। जब timeपहुँच जाता है, तो यह उस निकाय से घटक को निकाल देता है।
मैं थोड़ा उलझन में हूँ कि मैं एक ही चीज़ को कई चालों के साथ कैसे करूँगा।
मेरे शुरुआती विचार हैं कि मेरे पास होगा:
PositionComponent, MoveByComponentऊपर जैसा ही
MoveByCollectionComponentजिसमें MoveByComponentएस की एक सरणी है
MoveByCollectionSystemएक PositionComponentऔर ए के साथ एक इकाई के लिए लग रहा है MoveByCollectionComponent, MoveByComponentइसके अंदर एस के माध्यम से पुनरावृत्ति , आवश्यक के रूप में लागू / हटाने।
मुझे लगता है कि यह एक अधिक सामान्य समस्या है, एक ही घटक के कई होने, और हर एक पर कार्य करने के लिए इसी प्रणाली को चाहते हैं। मेरी संस्थाओं में घटक प्रकार -> घटक के हैश के अंदर उनके घटक होते हैं, इसलिए कड़ाई से प्रति इकाई एक विशेष प्रकार के केवल 1 घटक होते हैं।
क्या यह देखने का सही तरीका है?
क्या किसी इकाई के पास कभी भी किसी प्रकार का एक घटक होना चाहिए?
move x by 10 in 2 secondsऔर move x by -10 in 2 secondsइकाई पूरी तरह से स्थिर हो जाएगी?
MoveByकार्यक्षमता सिर्फ एक वेग की तरह है? ऐसा लगता है कि आप सही रास्ते पर हैं। आपके दूसरे प्रश्न के लिए, इकाई / घटक प्रणालियों के विभिन्न कार्यान्वयन बहुत सारे हैं। मेरे द्वारा दिए गए उत्तर में वर्णित एक लिंक का केवल एक घटक होगा।