A játék újraindítását egy Scriptel-el fogjuk elvégezni.
A Scriptet a játokoson hozzuk létre mondjuk "BackToStart" néven. A Script most hrom részből fog állni.
Először is szükségünk van kezdeti változókra.
Vector3 startPos;
A változó amire szükséghünk van gyakorlatilag csak a kezdeti pozíció. A célunk ugyanis az, hogy Zombival való találkozás esetén a kezdőpozíciót visszaállítsuk.
Ezt úgy fogjuk megoldani, hogy a játék indulásakor letároljuk, hogy hol is volt a játékos. Ezt a legegyszerűbben a "Start()" függvényben tehetjük meg.
void Start()
{
// pozició letárolasa
startPos = GetComponent().position;
}
Ha megvolt a kezdeti pozíció tárolása akkor már csak magával az ütközéssel kell foglalkoznunk. Erre a unity ad nekünk egy "OnCollisionEnter2D(...)" nevű függvényt. Ha ezt a függvényt megírjuk, akkor a keretrendszer meg fogja hívni a függvényket mindig, amikor valamilyen ütközés történt. A függvény paraméterében információkat kapunk az ütközésről, ami segít eldönteni, hogy mit is tegyünk.
Esetünkben az alábbi kódra lesz szükség.
// Ütközés esetén
void OnCollisionEnter2D(Collision2D col)
{
// Ha zombival ütköztünk
if(col.gameObject.tag == "Zombi")
{
// Akkor vissza a kezdőpozícióra.
GetComponent().position = startPos;
}
}
A program valójában egyszerűen működik. Ha ütközés történt, akkor meghívódi k a fenti függvény.
Itt az első fontos dolog, hogy a függvényünk mindig meghívódik, ha a játékos valamivel ütközik. Ebbe beletartozik a Zombi is, de a fal, föld, és egyéb tárgyak is. Azért, hogy csak a Zombival való ütközést bűntessük le kell ellenőrizni, hogy mivel találkoztunk. Ehhez a "col" paraméter "col.gameObject.tag" értékét hasznájuk. A "col.gameObject" az a GameObject amivel találkoztunk. Ennek a tag-jét (cimkéjét) fogjuk használni, hogy kiderítsük, milyen típusú tárggyal ütköztünk.
Ha kirdeül, hogy "Zombi"-val találkoztunk, akkor nincs mit tenni, a játék újraindul. Ehhez vissza kell álítanunk a pozíciónak a kezdeti állapotra, amit a Start függvényben letároltunk.
Az egész egyben így néz majd ki.
using System.Collections.Generic;
using UnityEngine;
public class BackToStart : MonoBehaviour
{
Vector3 startPos;
// Előkészítés
void Start()
{
// pozició letárolasa
startPos = GetComponent().position;
}
// Ütközés esetén
void OnCollisionEnter2D(Collision2D col)
{
// Ha zombival ütköztünk
if(col.gameObject.tag == "Zombi")
{
// Akkor vissza a kezdőpozícióra.
GetComponent().position = startPos;
}
}
}