यह एक अच्छा विचार है। आप अपने जहाज के आसपास प्रसार ढाल के कुछ प्रकार की आवश्यकता होगी। तीन शारीरिक मॉडल हैं जो मैं सोच सकता हूं कि आप चाहते हैं:
आप चाहते हैं कि यह लगभग एक तरल माध्यम की तरह लग रहा है, जहां दबाव ढाल में असंतुलन है, यानी एक बार जब आप कुछ कणों को पास कर लेते हैं तो वे आपके वेकेशन में वापस आ जाते हैं (जैसे नाव के पीछे पानी)। इस उदाहरण में, कण की स्थिति निरपेक्ष है, और यह केवल खिलाड़ी के साथ उनका संबंध है जो अस्थायी रूप से उनके प्रतिपादन की स्थिति को संशोधित करता है । यह थोड़ा सा है जब आप चीजों पर एक मोटी आवर्धक कांच पास करते हैं, और विवर्तन उन्हें स्थानांतरित करने के लिए लगता है - लेकिन केवल जब तक आप कांच को दूर नहीं ले जाते। इस मामले में, आपका जहाज कांच है।
यदि आप चाहते हैं कि वे जहाज से दूर चले जाएँ, और एक बार चले जाने के बाद उन्हें आगे बढ़ाएँ। यह आम तौर पर खाली जगह में मानक भौतिकी की तरह होता है जहां दबाव ढाल नहीं होते हैं (या बहुत छोटे) होते हैं।
आप जैसे ही (1) और (2) पहुंचते हैं, वैसे ही आप कणों को तेज़ी से जहाज से दूर ले जाना चाहते हैं, लेकिन एक बार जहाज चले जाने के बाद, कण धीरे-धीरे आपके जागने में स्वयं के बराबर हो जाएगा।
सभी तीन समाधानों के लिए सामान्य : आपके पास एक प्रसार क्षेत्र होना चाहिए जो आपके जहाज के साथ चलता हो। इस उदाहरण में हम इसे वृत्ताकार बनाएंगे। फिर आप वेक्टर का पता लगाते हैं, इसे v1 कहते हैं, जहाज और उस क्षेत्र के प्रत्येक कण के बीच। अपने कण को उस वेक्टर के साथ दूर धकेलें। आप इसे कितनी जोर से धक्का देंगे, यह जहाज से दूरी पर निर्भर करेगा: उपयोग 1 - v1.magnitude
। यह सूत्र आपको एक रैखिक शक्ति देगा, हालांकि आप इसे एक और ताकत का उपयोग करने के लिए संशोधित कर सकते हैं जैसे कि एक परिपत्र ताकत वक्र जो किनारों की ओर ताकत में कम हो जाती है। इससे इसे और अधिक देखने को मिलेगा, क्योंकि जहाज के चारों ओर गोलाकार दबाव ढाल के बजाय एक गोलाकार है।
समाधान 1 के लिए : अब आप सभी इस रेंडर अपडेट में उस कण (अर्थात स्प्राइट पोजिशन) के रेंडर पोजीशन को संशोधित करते हैं । क्योंकि आप इसे इस तरह से कर रहे हैं, यह विशुद्ध रूप से एक प्रतिपादन प्रभाव है और कण की वास्तविक दुनिया की स्थिति पर कोई प्रभाव नहीं है। इसलिए आप ऑफसेट (v1) रेंडर करने के लिए दुनिया की स्थिति को जोड़ते हैं और आपके पास अब बारी-बारी से विस्थापित कण होते हैं, जैसे ही आप अतीत की ओर बढ़ते हैं या उनके बगल में जाते हैं, और आप (आपके पीछे) से गुजरते हुए आसानी से कणों को पुन: प्रवाहित करते हैं।
समाधान 2 के लिए : केवल v1 को दृश्य स्थिति पर लागू करने के बजाय, इसे प्रत्येक तर्क अद्यतन पर कण की स्थिति में लागू करें। तो, p1.position += v1
। तो आप कण में एक त्वरक बल लगा रहे हैं, जो वेग में तब्दील हो जाता है। संभवतः, आप चाहते हैं कि प्रत्येक कण के वेग को कम कर दिया जाए ताकि वे धीरे-धीरे धीमा हो जाएं और एक बार आपके पास आने पर रुक जाएं। आप देख सकते हैं कि इस समाधान का परिणाम आपके नेबुला में गुच्छेदार कणों के रूप में होगा, क्योंकि वे कभी भी पुनर्परिभाषित नहीं करेंगे। बहुत यथार्थवादी नहीं, मुझे यकीन है, क्योंकि निहारिका उनके भीतर दबाव ढाल है, चाहे वास्तविकता में कोई भी कमजोर क्यों न हो।
समाधान 3 के लिए: (2) के रूप में ही, लेकिन इस मामले में आप अपने कणों को फिर से परिभाषित करने जा रहे हैं। यह आसानी से करने के लिए एक क्रूर बल दृष्टिकोण का एक सा है, लेकिन चूंकि ये केवल कण हैं और इस प्रकार आंख-कैंडी, आपको शायद ब्याज के एक विशाल क्षेत्र को कवर करने की आवश्यकता नहीं है (शायद केवल खिलाड़ी का एक त्रिज्या + maxPlayerSpeedPerbick या जो भी हो आयताकार क्षेत्र तर्क उद्देश्यों के लिए परिचालित होता है)। प्रत्येक कण ब्याज के क्षेत्र के भीतर एक दूसरे कण पर एक बल लागू करेगा। वे एक बार फिर से, एक दूसरे से दूरी पर आधारित बलों को लागू करेंगे। ब्याज के क्षेत्र में एक ही स्वीप में सभी इंटरपार्टिकल बलों की गणना करें, और फिर एक ही स्वीप में सभी बलों को लागू करें। अंत में, सुनिश्चित करें कि आप केवल इस अंतर-कण बल प्रसंस्करण को उन कणों पर करते हैं जिनमें शून्य वेग है। और एक बार कोई भी कण कुछ न्यूनतम गति तक पहुँच जाता है,
वहाँ सभी प्रकार के प्रसार सूत्र हैं आदि, लेकिन मुझे लगता है कि इस मामले में एक सरल समाधान सबसे अच्छा काम करता है।