Az érméket megszerző Script-et a játákosra fogjuk tenni "GetCoin" néven.
A Script törzse az ellenfélhez hasonlóan fog felépülni.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI; // !!! ez itt most fontos !!!
public class GetCoin : MonoBehaviour
{
public int score;
private Text scoreText;
// Előkészítés
void Start()
{
// Szöveg objetumának kikeresése
scoreText = GameObject.FindGameObjectWithTag("Score").GetComponent();
}
// Ha hozzáérünk valamihez
void OnTriggerEnter2D(Collider2D col)
{
// Csak ha az egy érme volt
if(col.gameObject.tag == "Coin")
{
// Pontszám növelése
score += 1;
// Kiírás
scoreText.text = "Pontszám: " + score;
// Érme eltűntetése
Destroy(col.gameObject);
}
}
}
A kód elején egy új dolgot találhatunk. A "using" kulcsszavak között megjelenik egy új sor, ami azt jelni a fordító számára, hogy a UI (vagyis a grafikus felület) elemeit is hsználni fogjuk a script-ben.
Ezek után a scripten belül két adattagot adunk meg.
public int score = 0;
private Text scoreText;
Az első adattag a pontszámot fogja tárolni, amíg a második a szöveges elemet, amire kiírjuk az aktuális pontszámot.
Az adatok megadása után a Start() függvényben a szokássos módon az előkészítés következik.
void Start()
{
// Szöveg objetumának kikeresése
scoreText = GameObject.FindGameObjectWithTag("Score").GetComponent();
}
Itt az egyetlen feladatunk, hogy előkeressük azt a szöveges mezőt, amire majd ki szeretnénk írni. Ezt egyszerűen megtehetjük, mert a szöveges mezőt elláttuk a "Score" címkével. Ha megvan az objektum, akkor a mezőnek ki tudjuk nyerni a "Text" komponensét, ami a megjelenített szöveget írja le.
Az előkészítés után jöhet a számítás. Mivel most Trigger typusú Collider-t használunk, ezért az "OnTriggerEnter2D(...)" függvényt kell megírnunk.
void OnTriggerEnter2D(Collider2D col)
{
// Csak ha az egy érme volt
if(col.gameObject.tag == "Coin")
{
// Pontszám növelése
score += 1;
// Kiírás
scoreText.text = "Pontszám: " + score;
// Érme eltűntetése
Destroy(col.gameObject);
}
}
A függvényen belül először is le kell ellenőzignünk, hogy érmével (vagyis "coin" cimkével ellátott objektummal) találkoztunk-e. Ha Igen, akkor növeljük a pontok számát, és a szöveges objektum "Text" mezőjébe kiírjuk az új pontszámot.
A pontszám kiírása után van még egy feladatunk. Ha megszereztük az aranyat, akkor annak a képét el kell tűntetni a játéktérről. A "Destroy(...)" függvény pont erre való. Egy kiválasztott GameObject-et (vagy komponenst) tud kitörölni. Ha kitöröljük az érme objektumát, akkor pedig az értelemszerűen eltűnik a színtérből.