एलईआरपी - रैखिक इंटरपोलेशन
मैंने कुछ दिन पहले इसी तरह की समस्या के लिए यह जवाब दिया था, लेकिन यहाँ हम जाते हैं:
रैखिक प्रक्षेप एक ऐसा कार्य है जो आपको प्रगति के आधार पर दो संख्याओं के बीच एक संख्या प्रदान करता है। आप वास्तव में दो बिंदुओं के बीच एक बिंदु प्राप्त कर सकते हैं।
महान सूत्र - इसकी गणना कैसे करें
सामान्य LERP फॉर्मूला द्वारा दिया जाता है pu = p0 + (p1 - p0) * u
। कहाँ पे:
- पु: परिणाम संख्या
- p0: प्रारंभिक संख्या
- p1: अंतिम संख्या
- u: प्रगति। यह 0 और 1 के बीच प्रतिशत में दिया जाता है।
प्रतिशत कैसे प्राप्त करें
आप सोच रहे होंगे, "मुझे यह प्रतिशत कैसे मिल सकता है !?"। चिंता मत करो। यह इस तरह है: शुरू करने के लिए वेक्टर को खत्म करने के लिए यात्रा करने में कितना समय लगेगा? ठीक है, इसे उस समय तक विभाजित करें जो पहले ही बीत चुका है। यह आपको प्रतिशत देगा।
देखिए, कुछ इस तरह: percentage = currentTime / finalTime;
वैक्टरों की गणना
परिणामी वेक्टर प्राप्त करने के लिए, आपको बस दो बार फार्मूला लागू करना होगा, एक एक्स घटक के लिए और एक वाई घटक के लिए। कुछ इस तरह:
point.x = start.x + (final.x - start.x) * progress;
point.y = start.y + (final.y - start.y) * progress;
परिवर्तनशील समय की गणना
आप 0.5 अंक की गति से यात्रा करने के लिए अपने अंक चाहते हैं, हाँ? तो चलिए बताते हैं, एक लंबी दूरी की यात्रा कितनी लंबी होगी।
आप इसे निम्नानुसार कर सकते हैं:
दूरी की लंबाई प्राप्त करें इसके लिए, आपको दो चीजों की आवश्यकता होगी। दूरी वेक्टर प्राप्त करें, फिर इसे लंबाई मान में बदलें।
distancevec = final - start;
distance = distancevec.length();
मुझे आशा है कि आप वैक्टर गणित जानते हैं। यदि आप नहीं करते हैं, तो आप इस फॉर्मूले के द्वारा वेक्टर की गणना कर सकते हैं d = sqrt(pow(v.x, 2) + pow(v.y, 2));
।
अंतिम समय में इसे प्राप्त करें और अपडेट करें। यह एक आसान है। जैसा कि आप चाहते हैं कि प्रत्येक टिक आपको एक 0.5 लंबाई मिले, हमें बस विभाजित करना है और हमें कितने टिक मिले हैं।
finalTime = distance / 0.5f;
किया हुआ।
सूचना: हो सकता है, यह आपके लिए अपेक्षित गति न हो, लेकिन यह सही है। तो आपके पास एक रैखिक आंदोलन है, यहां तक कि विकर्ण चाल पर भी। यदि आप x + = 0.5f, y + = 0.5f करना चाहते हैं, तो एक वेक्टर गणित पुस्तक पढ़ें और अपनी योजनाओं की फिर से जाँच करें।
goal_dist
अपनीif
स्थिति से मतलब रखते हैं?