Skip navigation

Aranyérme scriptelve

Aranyérme előkészítése

Az aranyérme előkészítéséhez először meg kell konstruálnunk a játékobjektumot ami az érmét adja.

Ehhez egy kiválasztott GameObject-et be kell húznunk a színtérbe.

Érme a színtérben

Ha megvan az érme, akkor hozzá kell adnunk egy megfelelő Collider-t, hogy le tudjuk kezelni, amikor a játékos nekiütközik. A példában egy Circle collidert-t adunk a játékhoz.

Collider paraméterei

Ügyelni kell a paraméteerk között arra is, hogy a Collider Trigger típusú legyen. Ezt az "Is Trigger" paraméter beállításával tudjuk megtenni.

A Trigger typusú collider-ek legfontosabb tulajdonsága, hogy bár figyelik az érintkezét, de fizikai ütközést nem generálnak. Ez azt jelenti, hogy ha a játékos nekimegy az érmének, akkor nem fogg benne megakadni-megállni, de az ütközésről a script-eken belül értesülni fogunk.

Végezetül előkészítés gyanánt be kell állítanunk az érmének a címkéjét is. Ezt Megadhatjuk egy újonan létrehozott "Coin" címkével.

Érme cimkéjének beállítása

Érme vezérlő script

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.

Sokszorosítás

Ahogy korábbqan az ellenfelek esetében is, az érméket is lehet sokszorosítani. Csak prefab-ot kell készíteni az érménkből, és több példányban lerakni azt a játéktérben.