यूनिटी में शॉट कैसे फायर करें

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

दृश्य की स्थापना

कोडिंग में उतरने से पहले, आइए सबसे पहले प्रोजेक्टाइल बनाने के लिए दृश्य सेट करें। आरंभ करने के लिए ये चरण दिए गए हैं:

  1. एक नया Unity प्रोजेक्ट बनाएं या मौजूदा प्रोजेक्ट खोलें.
  2. अपने दृश्य में एक 3D ऑब्जेक्ट (जैसे, एक घन या एक गोला) बनाएं, जो शॉट फायर करने वाले खिलाड़ी या ऑब्जेक्ट के रूप में कार्य करेगा।
  3. प्रक्षेप्य के रूप में कार्य करने के लिए एक और 3D ऑब्जेक्ट (जैसे, एक छोटा गोला) बनाएँ। जब गोली चलाई जाएगी तो यह तुरंत क्रियान्वित हो जाएगा।
  4. अपनी वस्तुओं को अर्थपूर्ण नाम देकर व्यवस्थित करें, जैसे "Player" और "ProjectilePrefab".

शॉट स्क्रिप्ट बनाना

अब जब हमारे पास हमारा मूल दृश्य है, तो आइए स्क्रिप्ट बनाएं जो शूटिंग को संभालेगी। हम स्क्रिप्ट का नाम Shot.cs रखेंगे और इसे प्लेयर ऑब्जेक्ट से जोड़ेंगे। यह स्क्रिप्ट प्रोजेक्टाइल को स्पॉन करेगी और फायरिंग का अनुकरण करने के लिए आगे की ओर बल लगाएगी।

स्क्रिप्ट बनाने के लिए इन चरणों का पालन करें:

  1. Unity एडिटर में, प्रोजेक्ट विंडो में राइट-क्लिक करें और Create > C# Script चुनें। स्क्रिप्ट का नाम Shot.cs रखें।
  2. अपने कोड संपादक में इसे खोलने के लिए Shot.cs फ़ाइल पर डबल-क्लिक करें।
  3. डिफ़ॉल्ट कोड को निम्नलिखित स्क्रिप्ट से बदलें:
using UnityEngine;

public class Shot : MonoBehaviour
{
    public GameObject projectilePrefab;  // The prefab of the projectile to shoot
    public Transform firePoint;          // The point where the projectile will be fired from
    public float projectileSpeed = 20f;  // Speed of the projectile

    void Update()
    {
        // Check if the player presses the fire button (default is left mouse button or spacebar)
        if (Input.GetButtonDown("Fire1"))
        {
            FireShot();
        }
    }

    void FireShot()
    {
        // Instantiate the projectile at the fire point's position and rotation
        GameObject projectile = Instantiate(projectilePrefab, firePoint.position, firePoint.rotation);

        // Get the Rigidbody component of the projectile to apply physics
        Rigidbody rb = projectile.GetComponent();

        if (rb != null)
        {
            // Apply force to the projectile to make it move forward
            rb.velocity = firePoint.forward * projectileSpeed;
        }
    }
}

यह स्क्रिप्ट निम्नलिखित कार्य करती है:

  • प्रक्षेप्य ऑब्जेक्ट को रखने के लिए एक सार्वजनिक projectilePrefab को परिभाषित करता है।
  • शॉट कहां से शुरू होता है, यह निर्दिष्ट करने के लिए firePoint का उपयोग करता है।
  • प्रक्षेप्य की गति को नियंत्रित करने के लिए projectileSpeed का उपयोग करता है।
  • Input.GetButtonDown("Fire1") का उपयोग करके प्लेयर इनपुट की जांच करता है, जो "Fire1" क्रिया को सुनता है (आमतौर पर बाएं माउस बटन या स्पेसबार पर मैप किया जाता है)।
  • firePoint पर एक प्रक्षेप्य को तत्कालित करता है और उस पर आगे की ओर वेग लागू करता है।

स्क्रिप्ट असाइन करना Unity

अब जबकि हमारे पास स्क्रिप्ट तैयार है, तो अब इसे प्लेयर ऑब्जेक्ट को असाइन करने और संदर्भ सेट अप करने का समय है:

  1. दृश्य में "Player" गेमऑब्जेक्ट का चयन करें।
  2. Shot.cs स्क्रिप्ट को "Player" पर खींचकर संलग्न करें।
  3. इंस्पेक्टर विंडो में, आपको स्क्रिप्ट के फ़ील्ड दिखाई देंगे। प्रोजेक्टाइल प्रीफ़ैब (जैसे, आपके द्वारा बनाया गया छोटा गोला) को ProjectilePrefab स्लॉट में असाइन करें।
  4. प्लेयर ऑब्जेक्ट के नीचे एक खाली गेमऑब्जेक्ट बनाएं और इसे "FirePoint" नाम दें। इसे प्लेयर के सामने या जहाँ भी आप प्रोजेक्टाइल को स्पॉन करना चाहते हैं, वहाँ रखें।
  5. स्क्रिप्ट में "FirePoint" ऑब्जेक्ट को FirePoint फ़ील्ड में खींचें।

शॉट का परीक्षण

शूटिंग की कार्यक्षमता का परीक्षण करने के लिए, Unity में प्ले बटन दबाएँ और फायर बटन दबाएँ (डिफ़ॉल्ट बायाँ माउस बटन या स्पेसबार है)। जब आप बटन दबाएँगे तो आपको प्रोजेक्टाइल को स्पॉन करते और आगे बढ़ते हुए देखना चाहिए। आप अपनी ज़रूरतों के हिसाब से प्रोजेक्टाइल की गति या उपस्थिति को बेहतर बना सकते हैं।

अक्सर पूछे जाने वाले प्रश्नों

मैं प्रक्षेप्य को दागने के बाद उसे कैसे नष्ट करूँ?

अपने प्रोजेक्टाइल को हमेशा के लिए मौजूद रहने से रोकने के लिए, आप उन्हें एक निश्चित समय के बाद नष्ट कर सकते हैं। FireShot विधि में, प्रोजेक्टाइल को इंस्टेंटिएट करने के बाद, आप जोड़ सकते हैं:

Destroy(projectile, 5f); // Destroys the projectile after 5 seconds

मैं शॉट में ध्वनि प्रभाव या एनिमेशन कैसे जोड़ूं?

आप AudioSource घटक का उपयोग करके ध्वनि प्रभाव जोड़ सकते हैं। बस इसे प्लेयर में जोड़ें और FireShot विधि में ध्वनि चलाएँ:

AudioSource audioSource = GetComponent();
audioSource.Play();

एनिमेशन के लिए, आप Animator घटक का उपयोग करके या FireShot विधि के भीतर कुछ GameObject स्थितियों को सक्षम/अक्षम करके एनिमेशन को ट्रिगर कर सकते हैं।

मैं प्रक्षेप्य को अन्य वस्तुओं के साथ कैसे क्रियाशील करूँ?

प्रक्षेप्य को अन्य वस्तुओं के साथ परस्पर क्रिया करने के लिए, सुनिश्चित करें कि प्रक्षेप्य में Rigidbody और Collider घटक है। फिर आप OnCollisionEnter या OnTriggerEnter का उपयोग करके टकराव का पता लगाने के लिए एक स्क्रिप्ट लिख सकते हैं:

void OnCollisionEnter(Collision collision)
{
    if (collision.gameObject.CompareTag("Enemy"))
    {
        Destroy(collision.gameObject); // Destroy enemy on collision
        Destroy(gameObject);           // Destroy the projectile
    }
}

निष्कर्ष

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

लिंक
Unity