Thu thập tiền xu 2D trong Unity
Việc nhặt và thu thập tiền xu đã trở thành một yếu tố chính trong trò chơi 2D, đặc biệt là trong 2D Platformers.
Để nhặt một đồng xu trong Unity chúng ta cần tạo một tập lệnh sẽ được gắn vào một đối tượng coin và sẽ bị hủy khi người chơi tiếp xúc với nó, cập nhật giá trị bộ đếm.
Tôi sẽ sử dụng 2D Character Controller, nhưng bạn có thể bỏ qua phần này nếu bạn đã có bộ điều khiển 2D.
bước
Để tạo một đồng xu 2D có thể nhặt và thu thập, hãy làm theo các bước dưới đây:
- Tạo một GameObject mới (GameObject -> Create Empty) và đặt tên cho nó "Coin"
- Đính kèm thành phần SpriteRenderer vào đối tượng "Coin"
- Gán hình đồng xu của bạn cho SpriteRenderer (bạn có thể sử dụng hình ảnh bên dưới, đảm bảo Loại họa tiết trong Cài đặt nhập được đặt thành 'Sprite (2D and UI)')
- Chia tỷ lệ đối tượng Coin cho đến khi có kích thước mong muốn
- Thay đổi vị trí trục Coin 'Z' sao cho phù hợp với vị trí của người chơi
- Đính kèm thành phần BoxCollider2D vào đối tượng "Coin"
- Tạo một tập lệnh mới, gọi nó là "SC_2DCoin", xóa mọi thứ khỏi tập lệnh rồi dán mã bên dưới vào trong tập lệnh đó:
SC_2DCoin.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SC_2DCoin : MonoBehaviour
{
//Keep track of total picked coins (Since the value is static, it can be accessed at "SC_2DCoin.totalCoins" from any script)
public static int totalCoins = 0;
void Awake()
{
//Make Collider2D as trigger
GetComponent<Collider2D>().isTrigger = true;
}
void OnTriggerEnter2D(Collider2D c2d)
{
//Destroy the coin if Object tagged Player comes in contact with it
if (c2d.CompareTag("Player"))
{
//Add coin to counter
totalCoins++;
//Test: Print total number of coins
Debug.Log("You currently have " + SC_2DCoin.totalCoins + " Coins.");
//Destroy coin
Destroy(gameObject);
}
}
}
- Đính kèm tập lệnh SC_2DCoin vào đối tượng "Coin"
- Chọn đối tượng trình phát của bạn và đảm bảo thẻ của nó được đặt thành "Player" (điều này là cần thiết để có thể nhặt xu)
Đồng xu hiện đã sẵn sàng, bạn có thể lưu nó vào Prefab và sao chép nó theo cấp độ.
Để tạo một máy đếm xu, hãy làm theo các bước dưới đây:
- Tạo Hình ảnh giao diện người dùng mới bằng cách nhấp chuột phải vào chế độ xem Thứ bậc -> Giao diện người dùng -> Hình ảnh và đặt tên cho nó "CoinIcon"
- Gán coin sprite cho thành phần Image
- Thay đổi Căn chỉnh RectTransform thành 'top left', Xoay thành (0, 1), Đăng X thành '5', Pos Y thành '-5', Chiều rộng và Chiều cao thành '25'
- Tạo Văn bản mới bằng cách nhấp chuột phải vào chế độ xem Thứ bậc -> Giao diện người dùng -> Văn bản và đặt tên cho nó "CoinCounter"
- Đặt "CoinCounter" RectTransform giống như "CoinIcon", ngoại trừ đặt Pos X thành '35' và Chiều rộng thành '160'
- Đặt Kiểu phông chữ văn bản thành 'Bold', Cỡ chữ thành 22, Căn chỉnh thành 'left center' và Màu sắc thành 'white'
- Tạo một tập lệnh mới, đặt tên là "SC_CoinCounter", xóa mọi thứ khỏi tập lệnh rồi dán đoạn mã bên dưới vào trong tập lệnh đó:
Tập lệnh đếm xu sẽ áp dụng số xu cho phần tử Văn bản.
SC_CoinCounter.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SC_CoinCounter : MonoBehaviour
{
Text counterText;
// Start is called before the first frame update
void Start()
{
counterText = GetComponent<Text>();
}
// Update is called once per frame
void Update()
{
//Set the current number of coins to display
if(counterText.text != SC_2DCoin.totalCoins.ToString())
{
counterText.text = SC_2DCoin.totalCoins.ToString();
}
}
}
- Đính kèm tập lệnh SC_CoinCounter vào đối tượng Văn bản "CoinCounter"
Nhấn Play và quan sát các đồng xu biến mất khi người chơi liên hệ và được thêm vào bộ đếm.