यूनिटी में हाथापाई युद्ध प्रणाली बनाना

खेलों में हाथापाई का मतलब है नज़दीकी सीमा की लड़ाई जिसमें खिलाड़ी दुश्मनों पर हमला करने के लिए हथियारों या अपने शरीर का इस्तेमाल करते हैं। इस तरह की लड़ाई कई गेम शैलियों में महत्वपूर्ण है, जिसमें एक्शन-एडवेंचर, रोल-प्लेइंग और फाइटिंग गेम शामिल हैं। हाथापाई प्रणाली गेमप्ले में गहराई जोड़ती है, जिससे खिलाड़ियों को एक ऐसा आंतरिक और इमर्सिव अनुभव मिलता है जो दूर से की जाने वाली लड़ाई से अलग होता है। Unity में हाथापाई प्रणाली को लागू करने में स्क्रिप्टिंग, एनीमेशन और टकराव का पता लगाना शामिल है ताकि सुचारू और उत्तरदायी युद्ध यांत्रिकी सुनिश्चित हो सके।

इस लेख में, हम आपको Unity में एक बुनियादी हाथापाई युद्ध प्रणाली बनाने के चरणों के माध्यम से मार्गदर्शन करेंगे, जो शुरुआती लोगों के लिए उपयुक्त है। हम खिलाड़ी चरित्र की स्थापना, हाथापाई हमले के एनिमेशन बनाने, हमले के तर्क की स्क्रिप्टिंग और हिट दर्ज करने के लिए टकराव का पता लगाने को लागू करने को कवर करेंगे।

खेलों में हाथापाई का महत्व

कुछ प्रकार के खेलों में हाथापाई का मुकाबला कई कारणों से आवश्यक है:

  • इमर्सिव गेमप्ले: नजदीकी मुकाबले से तीव्र और आकर्षक गेमप्ले अनुभव प्राप्त हो सकता है, जिससे खिलाड़ी एक्शन से अधिक जुड़ाव महसूस करते हैं।
  • विविधता: ऐसे खेल में हाथापाई का मुकाबला जोड़ने से, जिसमें मुख्य रूप से दूरी से लड़ाई शामिल है, विविधता आती है और गेमप्ले ताजा और दिलचस्प बना रहता है।
  • चरित्र और विश्व निर्माण: हाथापाई का मुकाबला चरित्र की क्षमताओं और खेल की सेटिंग को प्रतिबिंबित कर सकता है, जिससे समग्र कथा और विश्व निर्माण में वृद्धि होती है।
  • रणनीतिक गहराई: खिलाड़ियों को गेमप्ले में रणनीति की परतें जोड़ते हुए, स्थिति, समय और हथियार की पसंद पर विचार करना चाहिए।

खिलाड़ी चरित्र की स्थापना

  1. नया प्रोजेक्ट बनाएं: Unity खोलें और नया 3D प्रोजेक्ट बनाएं।
  2. एक खिलाड़ी चरित्र जोड़ें: अपने खिलाड़ी चरित्र के लिए 3D मॉडल आयात करें या बनाएँ। यदि आवश्यक हो तो आप Unity Asset Store से मुफ़्त संपत्ति का उपयोग कर सकते हैं।
  3. एनिमेटर कंट्रोलर सेट अप करें: प्लेयर के एनिमेशन को संभालने के लिए एक एनिमेटर कंट्रोलर बनाएँ। आवश्यक एनिमेशन (निष्क्रिय, चलना, हमला) आयात करें और एनिमेशन की स्थिति और संक्रमण सेट अप करें।

हाथापाई हमले एनिमेशन बनाना

  1. आक्रमण एनिमेशन आयात करें:
    • अपने पात्र के लिए आक्रमण एनिमेशन डाउनलोड करें या बनाएं।
    • इन एनिमेशन को Unity में आयात करें और उन्हें अपने एनिमेटर कंट्रोलर में जोड़ें।
  2. एनिमेशन ट्रांज़िशन सेट अप करें:
    • एनिमेटर नियंत्रक में निष्क्रिय, चलने और हमले की स्थिति के बीच संक्रमण बनाएँ।
    • इन संक्रमणों को नियंत्रित करने के लिए 'isAttacking' जैसे पैरामीटर का उपयोग करें।

हमले के तर्क की स्क्रिप्टिंग

हम एक C# स्क्रिप्ट लिखेंगे जो खिलाड़ी के हाथापाई हमले के तर्क को संभालेगी, जिसमें हमले के एनीमेशन को ट्रिगर करना और हिट का पता लगाना शामिल है।

  1. एक नई स्क्रिप्ट बनाएँ:
    • प्रोजेक्ट विंडो में राइट-क्लिक करें, 'Create -> C# Script' चुनें, और इसे 'PlayerCombat' नाम दें।
  2. स्क्रिप्ट कार्यान्वयन:
    • स्क्रिप्ट पर डबल-क्लिक करके उसे अपने पसंदीदा कोड संपादक (जैसे, विज़ुअल स्टूडियो कोड) में खोलें।
    using UnityEngine;
    
    public class PlayerCombat : MonoBehaviour
    {
        public Animator animator;
        public Transform attackPoint;
        public float attackRange = 0.5f;
        public LayerMask enemyLayers;
        public int attackDamage = 40;
        public float attackRate = 2f;
        private float nextAttackTime = 0f;
    
        void Update()
        {
            if (Time.time >= nextAttackTime)
            {
                if (Input.GetButtonDown("Fire1"))
                {
                    Attack();
                    nextAttackTime = Time.time + 1f / attackRate;
                }
            }
        }
    
        void Attack()
        {
            animator.SetTrigger("Attack");
    
            // Detect enemies in range of the attack
            Collider[] hitEnemies = Physics.OverlapSphere(attackPoint.position, attackRange, enemyLayers);
    
            // Damage them
            foreach (Collider enemy in hitEnemies)
            {
                enemy.GetComponent().TakeDamage(attackDamage);
            }
        }
    
        void OnDrawGizmosSelected()
        {
            if (attackPoint == null)
                return;
    
            Gizmos.DrawWireSphere(attackPoint.position, attackRange);
        }
    }
  3. स्क्रिप्ट असाइन करना:
    • 'PlayerCombat' स्क्रिप्ट को अपने खिलाड़ी पात्र से जोड़ें।
    • इंस्पेक्टर में 'Animator', 'Attack Point', और अन्य फ़ील्ड सेट करें।

शत्रु तर्क का क्रियान्वयन

  1. शत्रु स्क्रिप्ट बनाएँ:
    • प्रोजेक्ट विंडो में राइट-क्लिक करें, 'Create -> C# Script' चुनें, और इसे 'Enemy' नाम दें।
    • स्क्रिप्ट को अपने पसंदीदा कोड संपादक में खोलने के लिए उस पर डबल-क्लिक करें।
    using UnityEngine;
    
    public class Enemy : MonoBehaviour
    {
        public int maxHealth = 100;
        int currentHealth;
    
        void Start()
        {
            currentHealth = maxHealth;
        }
    
        public void TakeDamage(int damage)
        {
            currentHealth -= damage;
    
            if (currentHealth <= 0)
            {
                Die();
            }
        }
    
        void Die()
        {
            // Add death animation or effects
            Destroy(gameObject);
        }
    }
  2. स्क्रिप्ट असाइन करना:
    • अपने शत्रु वस्तुओं के साथ 'Enemy' स्क्रिप्ट संलग्न करें।

दृश्य और श्रव्य फीडबैक जोड़ना

दृश्य और श्रव्य प्रतिक्रिया के साथ हाथापाई युद्ध के अनुभव को बढ़ाना खिलाड़ी की संतुष्टि के लिए महत्वपूर्ण है। इसे कैसे करें, यहाँ बताया गया है:

  1. हिट प्रभाव जोड़ें:
    • जब दुश्मन पर हमला होता है तो कण प्रभाव पैदा करें।
    • जब किसी शत्रु पर प्रहार होता है तो इन प्रभावों को 'Attack' विधि में तत्कालित करें।
  2. ध्वनि प्रभाव जोड़ें:
    • हमले और हिट प्रभावों के लिए ध्वनि प्रभाव आयात करें।
    • हमलों के दौरान और दुश्मनों पर हमला होने पर इन ध्वनियों को बजाने के लिए 'AudioSource' घटक का उपयोग करें।
    using UnityEngine;
    
    public class PlayerCombat : MonoBehaviour
    {
        public Animator animator;
        public Transform attackPoint;
        public float attackRange = 0.5f;
        public LayerMask enemyLayers;
        public int attackDamage = 40;
        public float attackRate = 2f;
        private float nextAttackTime = 0f;
        public AudioClip attackSound;
        public AudioClip hitSound;
        private AudioSource audioSource;
        public GameObject hitEffect;
    
        void Start()
        {
            audioSource = GetComponent();
        }
    
        void Update()
        {
            if (Time.time >= nextAttackTime)
            {
                if (Input.GetButtonDown("Fire1"))
                {
                    Attack();
                    nextAttackTime = Time.time + 1f / attackRate;
                }
            }
        }
    
        void Attack()
        {
            animator.SetTrigger("Attack");
            audioSource.PlayOneShot(attackSound);
    
            // Detect enemies in range of the attack
            Collider[] hitEnemies = Physics.OverlapSphere(attackPoint.position, attackRange, enemyLayers);
    
            // Damage them and play hit effect
            foreach (Collider enemy in hitEnemies)
            {
                enemy.GetComponent().TakeDamage(attackDamage);
                audioSource.PlayOneShot(hitSound);
                Instantiate(hitEffect, enemy.transform.position, Quaternion.identity);
            }
        }
    
        void OnDrawGizmosSelected()
        {
            if (attackPoint == null)
                return;
    
            Gizmos.DrawWireSphere(attackPoint.position, attackRange);
        }
    }

निष्कर्ष

Unity में हाथापाई युद्ध प्रणाली को लागू करने से गेमप्ले का अनुभव काफी हद तक बढ़ सकता है, खासकर उन शैलियों में जहां नज़दीकी लड़ाई ज़रूरी है। इस गाइड का पालन करके, आप एनिमेशन, हमले के तर्क और टकराव का पता लगाने के साथ एक बुनियादी हाथापाई प्रणाली बना सकते हैं। जैसे-जैसे आप Unity के साथ अधिक सहज होते जाते हैं, आप अपनी ज़रूरतों के हिसाब से सिस्टम को और बेहतर बना सकते हैं।

लिंक
Unity 6