संपादित 1 दिन पहले द्वारा ExtremeHow संपादकीय टीम
यूनिटीखेल विकासएनीमेशन3डीप्रोग्रामिंगस्क्रिप्टिंगसी#भौतिकीनियंत्रणविंडोमैकलिनक्स
अनुवाद अपडेट किया गया 1 दिन पहले
यूनिटी एक लोकप्रिय गेम डेवलपमेंट प्लेटफ़ॉर्म है जो निर्माताओं को उनके गेम आइडिया को जीवन में लाने की सुविधा देता है। किसी भी गेम के मूलभूत पहलुओं में से एक है चरित्र की गति। चाहे यह एक सरल 2D प्लेटफार्मर हो या एक जटिल 3D दुनिया, जिस तरह से एक चरित्र चलता है उसका गेमप्ले अनुभव पर बड़ा प्रभाव पड़ सकता है। यह गाइड आपको यूनिटी में चरित्र गति को लागू करने के मूलभूत कदमों के माध्यम से ले जाने के लिए डिज़ाइन किया गया है। हम विभिन्न तरीकों को कवर करेंगे, जिनमें रिगिडबॉडी और कैरेक्टर कंट्रोलर कॉम्पोनेन्ट शामिल हैं, C# में मूलभूत गति स्क्रिप्ट को स्क्रिप्टिंग करना और इष्टतम गेमप्ले फ़ील के लिए ट्वीकिंग करना शामिल है।
प्रोग्रामिंग शुरू करने से पहले, आपको एक नया यूनिटी प्रोजेक्ट सेट अप करना होगा। यूनिटी हब खोलें और एक नया प्रोजेक्ट बनाएं। आप जिस प्रकार का खेल बना रहे हैं उसके आधार पर एक 2D या 3D टेम्पलेट चुन सकते हैं। अपने प्रोजेक्ट का नाम दें और इसे सहेजने के लिए एक स्थान चुनें। एक बार जब आपका प्रोजेक्ट बन जाता है, तो आप चरित्र गति को लागू करना शुरू कर सकते हैं।
अपने दृश्य में एक नया गेमऑब्जेक्ट जोड़ें। यह आपका चरित्र होगा। आप या तो एक 3D मॉडल, एक साधारण आकार जैसे कि घन या गोला, या 2D स्प्राइट का उपयोग कर सकते हैं यदि आप 2D गेम के साथ काम कर रहे हैं। सादगी के लिए, हम मानते हैं कि आप 3D चरित्र के लिए एक बुनियादी क्यूब का उपयोग कर रहे हैं।
यूनिटी में रिगिडबॉडी कॉम्पोनेन्ट फिजिक्स-आधारित गति को संभालने का एक तरीका प्रदान करता है। इसमें गुरुत्वाकर्षण, ड्रैग और टक्करों को शामिल किया जा सकता है। अपने चरित्र में रिगिडबॉडी जोड़ने के लिए, गेमऑब्जेक्ट का चयन करें और कम्पोनेंट जोड़ें पर क्लिक करें, फिर खोजें और रिगिडबॉडी जोड़ें।
// रिगिडबॉडी गति के लिए C# स्क्रिप्ट उदाहरण
using UnityEngine;
public class PlayerMovement : MonoBehaviour {
public float speed = 5f;
private Rigidbody rb;
void Start() {
rb = GetComponent<Rigidbody>();
}
void Update() {
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);
rb.AddForce(movement * speed);
}
}
यह कोड तीर कुंजी या WASD का उपयोग करके बुनियादी गति सेट करता है। गति वेरिएबल नियंत्रित करता है कि चरित्र कितनी तेजी से चलता है। रिगिडबॉडी कॉम्पोनेन्ट स्वतः ही टकराव और गुरुत्वाकर्षण को संभालता है। उस गति अनुभव को प्राप्त करने के लिए रिगिडबॉडी सेटिंग्स जैसे द्रव्यमान और ड्रैग को समायोजित करना याद रखें जो आप चाहते हैं।
यूनिटी का कैरेक्टर कंट्रोलर
चरित्र गति को लागू करने का एक और तरीका है। यह कॉम्पोनेन्ट गैर-फिज़िक्स आधारित है, यानी यह बलों या टॉर्कों पर प्रतिक्रिया नहीं करता है, लेकिन यह वस्तुओं से टकरा सकता है। इसे अक्सर खिलाड़ी पात्रों के लिए चिकनी, नियंत्रित गति प्राप्त करने के लिए उपयोग किया जाता है।
कैरेक्टर कंट्रोलर
कॉम्पोनेन्ट को अपने खेल वस्तु में जोड़ें, उसे चुनें और कम्पोनेंट जोड़ें पर क्लिक करें, फिर कैरेक्टर कंट्रोलर चुनें।
// कैरेक्टर कंट्रोलर गति के लिए C# स्क्रिप्ट उदाहरण
using UnityEngine;
public class PlayerMovement : MonoBehaviour {
public float speed = 6.0f;
public float jumpSpeed = 8.0f;
public float gravity = 20.0f;
private Vector3 moveDirection = Vector3.zero;
private CharacterController controller;
void Start() {
controller = GetComponent<CharacterController>();
}
void Update() {
if (controller.isGrounded) {
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
moveDirection = new Vector3(moveHorizontal, 0.0f, moveVertical);
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (Input.GetButton("Jump")) {
moveDirection.y = jumpSpeed;
}
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
}
इस उदाहरण में, स्क्रिप्ट थोड़ी अधिक जटिल है। कैरेक्टर कंट्रोलर अपनी खुद की मूव विधि का उपयोग करता है, जो अधिक परिष्कृत नियंत्रण की अनुमति देता है। यह उदाहरण कूदने को शामिल करता है और चरित्र को जमीन पर रखने के लिए गुरुत्वाकर्षण का उपयोग करता है। आप अपनी आवश्यकताओं के अनुरूप गति, जंपस्पीड और गुरुत्वाकर्षण बदल सकते हैं।
रिगिडबॉडी और कैरेक्टर कंट्रोलर दोनों तरीकों को गति को नियंत्रित करने के लिए स्क्रिप्ट की आवश्यकता होती है। पहले प्रदान की गई स्क्रिप्ट्स प्रारंभिक बिंदु हैं, लेकिन आप इनमें विस्तृत सुविधाएँ जैसे दौड़ना, झुकना या वातावरण के साथ बातचीत करना शामिल करते हुए विस्तार करना चाह सकते हैं।
मूवमेंट को परिष्कृत करने का एक उपयोगी तरीका है त्वरण और मंदन लागू करना, जिससे चरित्र आसानी से गति प्राप्त या खो देता है। यहां सरल तरीके से त्वरण को शामिल किया जा रहा है:
// त्वरण के साथ C# स्क्रिप्ट उदाहरण
public class PlayerMovement : MonoBehaviour {
public float speed = 6.0f;
public float acceleration = 5.0f;
private Vector3 velocity = Vector3.zero;
private Rigidbody rb;
void Start() {
rb = GetComponent<Rigidbody>();
}
void Update() {
float targetSpeed = Input.GetAxis("Vertical") * speed;
velocity.z = Mathf.MoveTowards(velocity.z, targetSpeed, acceleration * Time.deltaTime);
Vector3 move = transform.TransformDirection(velocity);
rb.velocity = new Vector3(move.x, rb.velocity.y, move.z);
}
}
यह स्क्रिप्ट `Mathf.MoveTowards` का उपयोग करके वर्तमान गति और लक्ष्य गति के बीच सहज तरीके से वर्णाणिकी करती है, जिससे एक अधिक परिष्कृत और यथार्थवादी गति अनुभव प्राप्त होता है।
बुनियादी गतियों को लागू करने के बाद, आप अपने चरित्र में अधिक उन्नत विशेषताएँ जोड़ना चाह सकते हैं। इनमें दौड़ना, डबल जंपिंग, और चढ़ाई शामिल हो सकते हैं:
यहां बताया गया है कि आप स्प्रिंटिंग को कैसे लागू कर सकते हैं:
// स्प्रिंटिंग के लिए C# स्क्रिप्ट उदाहरण
public class PlayerMovement : MonoBehaviour {
public float speed = 6.0f;
public float sprintSpeed = 12.0f;
public float acceleration = 5.0f;
private Vector3 velocity = Vector3.zero;
private Rigidbody rb;
void Start() {
rb = GetComponent<Rigidbody>();
}
void Update() {
float currentSpeed = Input.GetKey(KeyCode.LeftShift) ? sprintSpeed : speed;
float targetSpeed = Input.GetAxis("Vertical") * currentSpeed;
velocity.z = Mathf.MoveTowards(velocity.z, targetSpeed, acceleration * Time.deltaTime);
Vector3 move = transform.TransformDirection(velocity);
rb.velocity = new Vector3(move.x, rb.velocity.y, move.z);
}
}
यह स्क्रिप्ट चेक करती है कि क्या बाई शिफ्ट कुंजी दबाई जा रही है ताकि यह तय किया जा सके कि स्प्रिंट स्पीड लागू करनी है या नहीं।
एक गेम विकसित करते समय, आप बहुत समय गति को परिष्कृत करने में खर्च करेंगे। एक चरित्र की गति का अनुभव खिलाड़ी के अनुभव को परिभाषित कर सकता है। गति को परिष्कृत करने के लिए यहां कुछ सुझाव दिए गए हैं:
यूनिटी में चरित्र गति को लागू करना गेम विकास में एक मौलिक कौशल है। चाहे आप रिगिडबॉडी के साथ फिजिक्स-आधारित गति का उपयोग कर रहे हों या कैरेक्टर कंट्रोलर के साथ नियंत्रित गति का उपयोग कर रहे हों, मुख्य बात यह है कि मूल बातें समझें और उन्नत सुविधाओं के साथ विस्तार करें। स्क्रिप्टिंग और सूक्ष्म गति के माध्यम से, आप एक शानदार और आनंददायक खिलाड़ी अनुभव बना सकते हैं।
यदि आपको लेख की सामग्री में कुछ गलत लगता है, आप कर सकते हैं