2D колекціонування монет в Unity
Збирання та колекціонування монет стало основним у двовимірних іграх, особливо в 2D-платформерах.
Щоб підібрати монету в Unity, нам потрібно створити сценарій, який буде прикріплено до об’єкта coin і буде знищено, коли гравець стикається з ним, оновлення значення лічильника.
Я буду використовувати 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();
}
}
}
- Приєднайте сценарій SC_CoinCounter до об’єкта "CoinCounter" Text
Натисніть «Відтворити» та спостерігайте, як монети зникають після контакту з гравцем і додаються до лічильника.