Créer un jeu de type Clash of Clans dans Unity Pt. 2
Dans cette deuxième partie de notre série de tutoriels, nous allons implémenter des mécanismes de troupes pour attaquer et défendre dans notre jeu de type Clash of Clans. Nous allons créer des unités de troupes, gérer leurs mouvements et leur comportement, et permettre aux joueurs de les déployer pendant les attaques.
Installation de préfabriqués pour troupes
Tout d’abord, nous devons créer des préfabriqués de troupes qui représentent différentes unités du jeu.
- Créez un nouveau GameObject pour votre troupe en cliquant avec le bouton droit dans la Hiérarchie et en sélectionnant Objet 2D > Sprite.
- Nommez-le Warrior et attribuez-lui un sprite parmi vos ressources.
- Attachez un nouveau script appelé Troop pour gérer la logique des troupes.
using UnityEngine;
public class Troop : MonoBehaviour
{
public float movementSpeed = 2f;
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()
{
// Logic for attacking the target
Debug.Log("Attacking " + target.name);
}
}
Créer un gestionnaire de troupes
Nous allons créer un gestionnaire de troupes qui gère le déploiement des troupes et gère les troupes actives sur le champ de bataille.
using System.Collections.Generic;
using UnityEngine;
public class TroopManager : MonoBehaviour
{
public GameObject troopPrefab;
private List activeTroops = new List();
public void DeployTroop(Vector3 position)
{
GameObject troopObject = Instantiate(troopPrefab, position, Quaternion.identity);
Troop troop = troopObject.GetComponent();
activeTroops.Add(troop);
}
void Update()
{
// Here we can handle troop behaviors or remove them if needed
for (int i = activeTroops.Count - 1; i >= 0; i--)
{
if (activeTroops[i] == null)
{
activeTroops.RemoveAt(i);
}
}
}
}
Mise en œuvre de la mécanique d'attaque
Pour attaquer, nous allons créer un système de base où les troupes peuvent attaquer des bâtiments ou d'autres unités.
using UnityEngine;
public class Building : MonoBehaviour
{
public int health = 50;
public void TakeDamage(int damage)
{
health -= damage;
Debug.Log(name + " takes " + damage + " damage.");
if (health <= 0)
{
Destroy(gameObject);
Debug.Log(name + " destroyed!");
}
}
}
Déploiement de troupes à partir de l'interface utilisateur
Ensuite, nous allons configurer un bouton d'interface utilisateur simple pour déployer des troupes. Dans le canevas, créez un bouton et attribuez-lui la fonction de déploiement.
using UnityEngine;
using UnityEngine.UI;
public class UIManager : MonoBehaviour
{
public TroopManager troopManager;
public Button deployButton;
void Start()
{
deployButton.onClick.AddListener(OnDeployButtonClicked);
}
private void OnDeployButtonClicked()
{
Vector3 deployPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
deployPosition.z = 0; // Set z to 0 for 2D
troopManager.DeployTroop(deployPosition);
}
}
Ajout de la défense ennemie
Pour rendre le jeu plus interactif, implémentons des défenses ennemies qui attaqueront les troupes.
public class EnemyDefense : MonoBehaviour
{
public float attackRange = 2f;
public int damage = 5;
private Troop target;
void Update()
{
if (target != null)
{
if (Vector2.Distance(transform.position, target.transform.position) < attackRange)
{
Attack();
}
}
}
public void SetTarget(Troop newTarget)
{
target = newTarget;
}
private void Attack()
{
// Logic to damage the target troop
Debug.Log("Attacking troop " + target.name);
target.TakeDamage(damage);
}
}
Conclusion
Dans ce tutoriel, nous avons implémenté des mécanismes de troupes de base pour attaquer et défendre dans notre jeu de type Clash of Clans. Nous avons abordé le déploiement des troupes, les mouvements, le comportement d'attaque et les défenses ennemies. Vous pouvez étendre davantage ces mécanismes en ajoutant des types de troupes, des capacités spéciales et une IA ennemie plus complexe.