Colectarea de monede 2D în Unity
Alegerea și colectarea de monede au devenit un element de bază în jocurile 2D, în special în 2D Platformers.
Pentru a ridica o monedă în Unity, va trebui să creăm un script care va fi atașat unui obiect coin și va fi distrus odată ce jucătorul intră în contact cu acesta, actualizarea valorii contorului.
Voi folosi 2D Character Controller, dar puteți sări peste această parte dacă aveți deja un controler 2D.
Pași
Pentru a realiza o monedă 2D care poate fi ridicată și colectată, urmați pașii de mai jos:
- Creați un nou GameObject (GameObject -> Create Empty) și denumiți-l "Coin"
- Atașați o componentă SpriteRenderer la obiectul "Coin"
- Atribuiți-vă monedele sprite-ului SpriteRenderer (puteți folosi imaginea de mai jos, asigurați-vă că Tipul de textură din Setările de import este setat la 'Sprite (2D and UI)')
- Scalați obiectul Monedă până la dimensiunea dorită
- Schimbați poziția axei monedei 'Z' astfel încât să se potrivească cu poziția jucătorului
- Atașați o componentă BoxCollider2D la obiectul "Coin"
- Creați un script nou, numiți-l "SC_2DCoin", eliminați totul din el, apoi lipiți codul de mai jos în interiorul lui:
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);
}
}
}
- Atașați scriptul SC_2DCoin la obiectul "Coin"
- Selectați obiectul dvs. de jucător și asigurați-vă că eticheta acestuia este setată la "Player" (acest lucru este necesar pentru a putea ridica moneda)
Moneda este acum gata, o puteți salva în Prefab și o puteți duplica în jurul nivelului.
Pentru a crea un contor de monede, urmați pașii de mai jos:
- Creați o nouă imagine UI făcând clic dreapta pe vizualizarea Ierarhie -> UI -> Imagine și denumiți-o "CoinIcon"
- Atribuiți monede sprite la componenta Imagine
- Schimbați alinierea RectTransform la 'top left', Pivot la (0, 1), Post X la '5', Pos Y la '-5', Width and Height la '25'
- Creați text nou făcând clic dreapta pe vizualizarea Ierarhie -> UI -> Text și denumiți-l "CoinCounter"
- Setați "CoinCounter" RectTransform la fel ca "CoinIcon", cu excepția setării Pos X la '35' și Width la '160'
- Setați stilul fontului text la 'Bold', Dimensiunea fontului la 22, Alinierea la 'left center' și Culoare la 'white'
- Creați un nou script, numiți-l "SC_CoinCounter", eliminați totul din el, apoi lipiți codul de mai jos în interiorul lui:
Scriptul contor monede va aplica numărul de monede elementului 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();
}
}
}
- Atașați scriptul SC_CoinCounter la obiectul "CoinCounter" Text
Apăsați pe Play și observați că monedele dispar la contactul jucătorului și sunt adăugate la un contor.