2D колекціонування монет в Unity

Збирання та колекціонування монет стало основним у двовимірних іграх, особливо в 2D-платформерах.

Щоб підібрати монету в Unity, нам потрібно створити сценарій, який буде прикріплено до об’єкта coin і буде знищено, коли гравець стикається з ним, оновлення значення лічильника.

Sharp Coder Відеоплеєр

Я буду використовувати 2D-контролер символів, але ви можете пропустити цю частину, якщо у вас уже є 2D-контролер.

Кроки

Щоб створити двовимірну монету, яку можна брати та збирати, виконайте наведені нижче дії.

  • Створіть новий GameObject (GameObject -> Create Empty) і назвіть його "Coin"
  • Прикріпіть компонент SpriteRenderer до об’єкта "Coin"
  • Призначте свій спрайт монети SpriteRenderer (ви можете використати зображення нижче, переконайтеся, що для параметра Texture Type у параметрах імпорту встановлено значення 'Sprite (2D and UI)')

Прозоре зображення золотої монети

  • Змініть об’єкт Coin до потрібного розміру
  • Змініть положення осі монети 'Z' так, щоб воно відповідало положенню гравця
  • Приєднайте компонент BoxCollider2D до об’єкта "Coin"
  • Створіть новий сценарій, назвіть його "SC_2DCoin", видаліть із нього все, а потім вставте в нього наведений нижче код:

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);
        }
    }
}
  • Приєднайте сценарій SC_2DCoin до об’єкта "Coin"
  • Виберіть об’єкт гравця та переконайтеся, що для його тегу встановлено значення "Player" (це потрібно, щоб можна було підібрати монету)

Тепер монета готова, ви можете зберегти її в Prefab і дублювати на рівні.

Щоб створити лічильник монет, виконайте наведені нижче дії.

  • Створіть нове зображення інтерфейсу користувача, клацнувши правою кнопкою миші на поданні ієрархії -> інтерфейс користувача -> зображення та назвіть його "CoinIcon"
  • Призначте спрайт монети компоненту Image
  • Змініть вирівнювання RectTransform на 'top left', Pivot на (0, 1), Post X на '5', Pos Y на '-5', Width і Height на '25'

  • Створіть новий текст, клацнувши правою кнопкою миші на перегляді ієрархії -> інтерфейс користувача -> текст і назвіть його "CoinCounter"
  • Встановіть "CoinCounter" RectTransform так само, як "CoinIcon", за винятком того, що встановіть Pos X на '35' і Width на '160'
  • Встановіть стиль шрифту тексту на 'Bold', розмір шрифту на 22, вирівнювання на 'left center' і колір на 'white'

  • Створіть новий сценарій, назвіть його "SC_CoinCounter", видаліть з нього все, а потім вставте в нього наведений нижче код:

Сценарій лічильника монет застосує кількість монет до елемента Text.

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();
        }
    }
}

Натисніть «Відтворити» та спостерігайте, як монети зникають після контакту з гравцем і додаються до лічильника.

Рекомендовані статті
Zone Controller Pro - пакет Unity Asset Store
Як використовувати нову систему водопостачання HDRP в Unity
FPC Swimmer - всеосяжний ресурс Unity для занурення у воду
Ultimate Spawner 2.0 – ресурс, що змінює гру
Сценарій вигляду миші для Unity
Weather Maker - підняття середовища Unity на нову висоту
Як використовувати контролер Xbox в Unity