यूनिटी में क्लैश ऑफ क्लैंस जैसा गेम बनाना भाग 3

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

सैन्य वर्ग को बढ़ाना

हमें युद्ध को बेहतर तरीके से संभालने के लिए मौजूदा Troop क्लास को बढ़ाने की ज़रूरत है। इसमें स्वास्थ्य को ट्रैक करना और खिलाड़ियों और AI दोनों के हमलों को संभालना शामिल होगा।

using UnityEngine;

public class Troop : MonoBehaviour
{
    public float movementSpeed = 2f;
    public int health = 50; // Added health property
    public int damage = 10;
    public float attackRange = 1f;
    private GameObject target;

    void Update()
    {
        if (target != null)
        {
            MoveTowardsTarget();
        }
    }

    public void SetTarget(GameObject newTarget)
    {
        target = newTarget;
    }

    private void MoveTowardsTarget()
    {
        float step = movementSpeed * Time.deltaTime;
        transform.position = Vector2.MoveTowards(transform.position, target.transform.position, step);

        if (Vector2.Distance(transform.position, target.transform.position) < attackRange)
        {
            Attack();
        }
    }

    private void Attack()
    {
        // Attack the target
        Building building = target.GetComponent();
        if (building != null)
        {
            building.TakeDamage(damage);
            Debug.Log(name + " attacked " + target.name);
        }
    }

    public void TakeDamage(int damage)
    {
        health -= damage;
        Debug.Log(name + " takes " + damage + " damage.");
        
        if (health <= 0)
        {
            Destroy(gameObject);
            Debug.Log(name + " destroyed!");
        }
    }
}

एक लड़ाकू प्रबंधक बनाना

हम एक CombatManager बनाएंगे जो सैनिकों के बीच बातचीत को संभालेगा, जिसमें यह पता लगाना भी शामिल है कि सैनिक कब हमला करने की सीमा में हैं और उनके लक्ष्यों का प्रबंधन करना भी शामिल है।

using UnityEngine;
using System.Collections.Generic;

public class CombatManager : MonoBehaviour
{
    public List playerTroops;
    public List enemyTroops;

    void Update()
    {
        foreach (Troop troop in playerTroops)
        {
            FindTarget(troop, enemyTroops);
        }

        foreach (Troop troop in enemyTroops)
        {
            FindTarget(troop, playerTroops);
        }
    }

    private void FindTarget(Troop troop, List enemyTroops)
    {
        foreach (Troop enemy in enemyTroops)
        {
            if (Vector2.Distance(troop.transform.position, enemy.transform.position) < troop.attackRange)
            {
                troop.SetTarget(enemy.gameObject);
                return; // Exit after setting the first target
            }
        }

        troop.SetTarget(null); // No target found
    }
}

एआई व्यवहार को लागू करना

युद्ध को और अधिक आकर्षक बनाने के लिए, हम दुश्मन सैनिकों के लिए बुनियादी एआई व्यवहार को लागू कर सकते हैं।

public class EnemyAI : MonoBehaviour
{
    public float patrolRange = 5f;
    private Vector2 startPosition;

    void Start()
    {
        startPosition = transform.position;
    }

    void Update()
    {
        // Simple patrol logic
        transform.Translate(Vector2.right * Mathf.Sin(Time.time) * Time.deltaTime);

        // Check if the troop is in range to attack
        Troop troop = GetComponent();
        if (troop != null && troop.target == null)
        {
            // Find a new target
            CombatManager combatManager = FindObjectOfType();
            combatManager.FindTarget(troop, combatManager.playerTroops);
        }
    }
}

युद्ध एनिमेशन बनाना

युद्ध की दृश्य अपील को बढ़ाने के लिए, हम अपने सैनिकों में सरल एनिमेशन जोड़ सकते हैं। आप बुनियादी हमले के एनिमेशन सेट करने के लिए यूनिटी के एनिमेटर घटक का उपयोग कर सकते हैं।

  1. अपने सैन्य एनिमेशन को Unity में आयात करें।
  2. Troop वर्ग में, एक सार्वजनिक Animator चर बनाएँ।
  3. Attack विधि के दौरान एनीमेशन को ट्रिगर करें।
public class Troop : MonoBehaviour
{
    public Animator animator; // Add this line

    private void Attack()
    {
        animator.SetTrigger("Attack"); // Trigger attack animation
        // ... rest of the attack logic
    }
}

एक लड़ाकू यूआई बनाना

हम सैनिकों के लिए स्वास्थ्य बार और अन्य प्रासंगिक युद्ध संबंधी जानकारी प्रदर्शित करने के लिए एक सरल यूआई लागू करेंगे।

  1. Hierarchy में, एक नया UI > Canvas बनाएं।
  2. प्रत्येक सेना के स्वास्थ्य बार को दर्शाने के लिए UI > Image तत्व जोड़ें।
  3. सेना के स्वास्थ्य के आधार पर स्वास्थ्य बार को अद्यतन करने के लिए स्क्रिप्ट का उपयोग करें।
using UnityEngine;
using UnityEngine.UI;

public class HealthBar : MonoBehaviour
{
    public Troop troop;
    public Image healthBar;

    void Update()
    {
        float healthPercentage = (float)troop.health / 50; // Assuming max health is 50
        healthBar.fillAmount = healthPercentage;
    }
}

निष्कर्ष

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

अगले कदम

लिंक
Unity 6