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.

Sharp Coder Trình phát video

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)')

Đồng Xu Vàng Hình Ảnh Trong Suốt

  • 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.

Bài viết được đề xuất
Cách sử dụng hệ thống nước HDRP mới trong Unity
Cách thiết lập bộ điều khiển cần điều khiển để chuyển động trong Unity
Cách sử dụng Bộ điều khiển Xbox trong Unity
Hướng dẫn tấn công cận chiến 2D cho Unity
Tài sản thống nhất hàng đầu từ Cửa hàng tài sản
FPC Swimmer - Tài sản thống nhất toàn diện cho môi trường nước đắm chìm
Trình chỉnh sửa bản đồ chiều cao địa hình trong trò chơi cho Unity