Erstellen eines Clash of Clans-ähnlichen Spiels in Unity, Teil 2
In diesem zweiten Teil unserer Tutorial-Reihe implementieren wir Truppenmechaniken für Angriff und Verteidigung in unserem Clash of Clans-ähnlichen Spiel. Wir erstellen Truppeneinheiten, verwalten ihre Bewegung und ihr Verhalten und ermöglichen es den Spielern, sie bei Angriffen einzusetzen.
Einrichten von Truppen-Prefabs
Zuerst müssen wir Truppen-Prefabs erstellen, die verschiedene Einheiten im Spiel darstellen.
- Erstellen Sie ein neues GameObject für Ihre Truppe, indem Sie mit der rechten Maustaste in die Hierarchie klicken und 2D-Objekt > Sprite auswählen.
- Nennen Sie es Warrior und weisen Sie ein Sprite aus Ihren Assets zu.
- Fügen Sie ein neues Skript namens Troop an, um die Truppenlogik zu handhaben.
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);
}
}
Einen Truppenmanager erstellen
Wir werden einen Truppenmanager erstellen, der den Truppeneinsatz übernimmt und aktive Truppen auf dem Schlachtfeld verwaltet.
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);
}
}
}
}
Implementierung der Angriffsmechanik
Zum Angreifen erstellen wir ein Basissystem, bei dem Truppen Gebäude oder andere Einheiten angreifen können.
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!");
}
}
}
Truppen über die Benutzeroberfläche einsetzen
Als Nächstes richten wir eine einfache UI-Schaltfläche zum Einsatz von Truppen ein. Erstellen Sie im Canvas eine Schaltfläche und weisen Sie die Einsatzfunktion zu.
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);
}
}
Hinzufügen feindlicher Verteidigung
Um das Spiel interaktiver zu gestalten, implementieren wir feindliche Verteidigungsanlagen, die die Truppen angreifen.
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);
}
}
Abschluss
In diesem Tutorial haben wir grundlegende Truppenmechaniken für Angriff und Verteidigung in unserem Clash of Clans-ähnlichen Spiel implementiert. Wir haben Truppenaufstellung, Bewegung, Angriffsverhalten und feindliche Verteidigung behandelt. Sie können diese Mechaniken weiter ausbauen, indem Sie Truppentypen, Spezialfähigkeiten und eine komplexere feindliche KI hinzufügen.