Сбор монет в 2D в Unity
Сбор и сбор монет стали основным продуктом в 2D-играх, особенно в 2D-платформерах.
Чтобы подобрать монету в Unity, нам нужно создать скрипт, который будет прикреплен к объекту coin и будет уничтожен, как только игрок соприкоснется с ним. обновление значения счетчика.
Я буду использовать 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".
Нажмите «Играть» и наблюдайте, как монеты исчезают при контакте с игроком и добавляются на счетчик.