सबसे पहले, XNA भी C # का उपयोग करता है इसलिए यह समान प्रोग्रामिंग भाषा है। और यद्यपि अंतर्निहित API में DirectX से कुछ अंतर हो सकते हैं, जिसका कूदने से कोई लेना-देना नहीं है, इसलिए यहां उसी ट्यूटोरियल या उत्तर को लागू करना चाहिए। इसके अलावा, कई कारकों के आधार पर, इसे लागू करने के कई तरीके हैं। नीचे मैं जो वर्णन करूंगा वह सिर्फ संभावनाओं में से एक है।
बुनियादी भौतिकी आवश्यकताएँ
सबसे पहले आपको अपने अपडेट लूप पर कुछ बुनियादी भौतिकी चर और गणना की आवश्यकता है। विशेष रूप से, आपको स्थिति, वेग, और गुरुत्वाकर्षण को परिभाषित करने की आवश्यकता है, और आपका अपडेट लूप लगभग इसी तरह से कुछ करना चाहिए (टक्कर का पता लगाने और प्रतिक्रिया सादगी के लिए छोड़ा गया):
float positionX, positionY; // Position of the character
float velocityX, velocityY; // Velocity of the character
float gravity = 0.5f; // How strong is gravity
void Update(float time)
{
positionX += velocityX * time; // Apply horizontal velocity to X position
positionY += velocityY * time; // Apply vertical velocity to X position
velocityY += gravity * time; // Apply gravity to vertical velocity
}
फिक्स्ड हाइट जंप
अब एक छलांग को लागू करने का सबसे आसान तरीका जिसमें हमेशा एक ही ऊंचाई होती है, चाहे आप कितनी भी बार कुंजी दबाएं, बस एक बार ऊर्ध्वाधर वेग को बदलना है। इससे चरित्र उभरने लगेगा, जबकि गुरुत्वाकर्षण स्वतः उसे नीचे लाने का ध्यान रखेगा:
void OnJumpKeyPressed()
{
velocityY = -12.0f; // Give a vertical boost to the players velocity to start jump
}
महत्वपूर्ण यदि आप अपने चरित्र को जमीन पर नहीं रखते हैं, तो आप एक छलांग शुरू करने में सक्षम नहीं होना चाहते हैं, इसलिए आपको इसके लिए एक चेक जोड़ना होगा।
चर ऊँचाई कूद
लेकिन मारियो और सोनिक जैसे खेलों में एक वैरिएबल जंप होता है जहां जंप की ऊंचाई इस बात पर निर्भर करती है कि आप बटन को कितने समय तक दबाते हैं। इस मामले में आपको जंप की को दबाने और छोड़ने दोनों को संभालने की आवश्यकता होगी । आप कुछ ऐसा जोड़ सकते हैं:
void OnJumpKeyReleased()
{
if(velocityY < -6.0f) // If character is still ascending in the jump
velocityY = -6.0f; // Limit the speed of ascent
}
ऊपर दिए गए कोड में इन सभी मानों (जैसे संख्याएँ 0.5
, -12.0f
या -6.0f
) को घुमाते हुए, अपनी छलांग का अहसास बदल सकते हैं, वह कितना ऊंचा कूदता है, कूदने का बटन जारी करने के बाद भी वह कितनी गति रखता है, कितनी तेजी से गिरता है, आदि। ।
महत्वपूर्ण इन फ़ंक्शंस को हर फ़्रेम पर न बुलाएं। उन्हें केवल एक बार कॉल करें जब कुंजी दबाया या जारी किया गया हो। अन्यथा आपका चरित्र कूदने के बजाय उड़ जाएगा।
काम करने का उदाहरण
मैंने अभी ऊपर वर्णित तकनीकों का एक त्वरित उदाहरण बनाया है, जिसे आप यहां अपने ब्राउज़र पर आज़मा सकते हैं (कूदने के लिए माउस बटन दबाएं, कूद की ऊंचाई को नियंत्रित करने के लिए इसे मध्य में छोड़ दें)। यह जेएस में है लेकिन जैसा मैंने पहले उल्लेख किया था, इस मामले में भाषा अप्रासंगिक है।
http://jsfiddle.net/LyM87/