Tạo một trò chơi giống Clash of Clans trong Unity Pt. 2
Trong phần thứ hai của chuỗi hướng dẫn này, chúng ta sẽ triển khai cơ chế quân lính để tấn công và phòng thủ trong trò chơi giống Clash of Clans của chúng ta. Chúng ta sẽ tạo các đơn vị quân lính, quản lý chuyển động và hành vi của chúng, và cho phép người chơi triển khai chúng trong các cuộc tấn công.
Thiết lập quân đội tiền chế
Đầu tiên, chúng ta cần tạo các đơn vị quân mẫu đại diện cho các đơn vị khác nhau trong trò chơi.
- Tạo một GameObject mới cho quân của bạn bằng cách nhấp chuột phải vào Hierarchy và chọn 2D Object > Sprite.
- Đặt tên là Warrior và gán một sprite từ tài sản của bạn.
- Đính kèm một tập lệnh mới có tên là Troop để xử lý logic quân đội.
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);
}
}
Tạo Quản lý quân đội
Chúng tôi sẽ tạo một Trình quản lý quân đội để xử lý việc triển khai quân đội và quản lý quân đội đang hoạt động trên chiến trường.
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);
}
}
}
}
Triển khai Cơ chế tấn công
Để tấn công, chúng ta sẽ tạo ra một hệ thống cơ bản nơi quân lính có thể tấn công các tòa nhà hoặc các đơn vị khác.
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!");
}
}
}
Triển khai quân từ UI
Tiếp theo, chúng ta sẽ thiết lập một nút UI đơn giản để triển khai quân. Trong Canvas, tạo một nút và chỉ định chức năng triển khai.
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);
}
}
Thêm phòng thủ của kẻ thù
Để trò chơi mang tính tương tác hơn, hãy triển khai hệ thống phòng thủ của kẻ thù để tấn công quân địch.
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);
}
}
Phần kết luận
Trong hướng dẫn này, chúng tôi đã triển khai cơ chế quân cơ bản để tấn công và phòng thủ trong trò chơi giống Clash of Clans của chúng tôi. Chúng tôi đã đề cập đến việc triển khai quân, di chuyển, hành vi tấn công và phòng thủ của kẻ thù. Bạn có thể mở rộng các cơ chế này hơn nữa bằng cách thêm các loại quân, khả năng đặc biệt và AI của kẻ thù phức tạp hơn.