Сбор монет в 2D в Unity

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

Чтобы подобрать монету в Unity, нам нужно создать скрипт, который будет прикреплен к объекту coin и будет уничтожен, как только игрок соприкоснется с ним. обновление значения счетчика.

Sharp Coder Видео проигрыватель

Я буду использовать 2D-контроллер символов, но вы можете пропустить эту часть, если у вас уже есть 2D-контроллер.

Шаги

Чтобы сделать 2D-монету, которую можно будет взять и собрать, выполните следующие действия:

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

Золотая монета прозрачное изображение

  • Масштабируйте объект «Монета» до желаемого размера.
  • Измените положение оси монеты '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"
  • Назначьте спрайт монеты компоненту изображения.
  • Измените выравнивание RectTransform на 'top left', Pivot на (0, 1), Post X на '5', Pos Y на '-5', ширину и высоту на '25'

  • Создайте новый текст, щелкнув правой кнопкой мыши представление иерархии -> пользовательский интерфейс -> текст и назовите его. "CoinCounter"
  • Установите "CoinCounter" RectTransform так же, как "CoinIcon", за исключением того, что для Pos X установите значение '35', а для ширины — значение '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();
        }
    }
}
  • Прикрепите скрипт SC_CoinCounter к текстовому объекту "CoinCounter".

Нажмите «Играть» и наблюдайте, как монеты исчезают при контакте с игроком и добавляются на счетчик.

Рекомендуемые статьи
Zone Controller Pro — пакет хранилища ресурсов Unity
Как использовать новую систему водоснабжения HDRP в Unity
FPC Swimmer — комплексный ресурс Unity для погружения в водную среду
Ultimate Spawner 2.0 — актив, меняющий правила игры
Скрипт просмотра мыши для Unity
Weather Maker — поднятие среды Unity на новую высоту
Как использовать контроллер Xbox в Unity