जेसन,
तीन ऑब्जेक्ट विशेषताओं के बजाय,
- बिंदु (x, y) स्थिति
- वेक्टर 2 डी (एक्स, वाई) दिशा
- इंट स्पीड
दिशा और गति को एक वेग वेक्टर में संयोजित करना अक्सर बहुत आसान होता है। तब आपके पास केवल दो विशेषताएं हैं,
- बिंदु (x, y) स्थिति
- वेक्टर 2 डी (एक्स, वाई) वेग
अद्यतन स्थिति
जब आपको ऑब्जेक्ट की स्थिति को अपडेट करने की आवश्यकता होती है, तो यह उतना ही सरल है:
position.x += velocity.x * Δt;
position.y += velocity.y * Δt;
Δt
आपका समय कहां है - या समय अंतर - या समय कदम।
स्थिति और वेग को अद्यतन करना
त्वरण को संभालने के लिए यह बहुत आसान है (जैसे कि गुरुत्वाकर्षण से)। यदि आपके पास त्वरण वेक्टर है, तो आप इस तरह वेग और स्थिति को एक साथ अपडेट कर सकते हैं:
position.x += (velocity.x * Δt) + (0.5 * acceleration.x * Δt * Δt);
position.y += (velocity.y * Δt) + (0.5 * acceleration.y * Δt * Δt);
velocity.x += acceleration.x * Δt;
velocity.y += acceleration.y * Δt;
(यह मूल रूप से भौतिकी 101 से s = vt + isat from सूत्र है।)
एक गति लागू करना
यदि आप किसी सामान्य दिशा में दिए गए गति को लागू करना चाहते हैं, तो आप इस तरह से वेग निर्धारित कर सकते हैं:
velocity.x = normalizedDirection.x * speed;
velocity.y = normalizedDirection.y * speed;
एक गति प्राप्त करना
और अगर आपको रिवर्स वेग वेक्टर से गति और दिशा प्राप्त करने की आवश्यकता है - तो आप बस पाइथागोरस प्रमेय या .Length()
विधि का उपयोग कर सकते हैं :
speed = velocity.Length();
और एक बार गति ज्ञात हो जाने के बाद, सामान्य दिशा को गति द्वारा वेग को विभाजित करके गणना की जा सकती है (शून्य से विभाजित होने से बचने के लिए सावधान रहना):
if (speed != 0) {
normalizedDirection.x = velocity.x / speed;
normalizedDirection.y = velocity.y / speed;
} else {
normalizedDirection.x = 0;
normalizedDirection.y = 0;
}