You are on page 1of 7

NAPREDNE TEHNIKE RAZVOJA

VIDEOIGARA
PONAŠANJE NEPRIJATELJA
Kreiranje neprijatelja – Ponašanje
neprijatelja
Kreirat ćemo neprijatelja koji će se moći kretati,
tj. pratiti igrača
− Na sceni kreirajte novi objekt u obliku kapsule
(3D Object > Capsule) te ga nazovite
Neprijatelj
− Objekt po Y osi postavite na 1
− Objektu promijenite oznaku na Neprijatelj te
mu dodajte skriptu za upravljanje životnim
bodovima neprijatelja
− Kreirajte novu skriptu NeprijateljKontroler i
dodajte ju na objekt neprijatelja
− Objekt dodajte i komponentu Rigidbody te
onemogućite rotiranje po svim osima (opcija
Freeze Rotation)
88
Kreiranje neprijatelja – Ponašanje
neprijatelja
Kako bi se neprijatelj mogao kretati prema igraču, potrebna mu je referenca na poziciju
igrača
− U skripti IgracKretanje ćemo kreirati statičku varijablu tipa IgracKretanje koju ćemo
nazvati instanca
public static IgracKretanje instanca;
− Varijabla instanca će sada biti dostupna iz svih ostalih skripti projekta. Putem te
varijable, koja je referenca na skriptu IgracKretanje, možemo doći između ostaloga i
do pozicije igrača
void Awake() {
cc = GetComponent<CharacterController>();
instanca = this; //Nova linija koda
}

89
Kreiranje neprijatelja – Ponašanje
neprijatelja
Prvo ćemo napraviti jednostavno pomicanje neprijatelja prema poziciji igrača
U skripti NeprijateljKontroler ćemo prvo kreirati nekoliko varijabli
−brzina: definira brzinu kretanja neprijatelja
−rb: referenca na komponentu Rigidbody
−pozicijaIgraca: definira poziciju na kojoj se nalazi igrač
public float brzina;
public Rigidbody rb;
private Vector3 pozicijaIgraca;

90
Kreiranje neprijatelja – Ponašanje
neprijatelja
void Update() {
pozicijaIgraca = IgracKretanje.instanca.transform.position;
pozicijaIgraca.y = transform.position.y;
transform.LookAt(pozicijaIgraca);
rb.velocity = transform.forward * brzina;}
−Dohvaćamo poziciju igrača pomoću varijable instanca (iz klase IgracKretanje)
−Kada imamo poziciju prema kojoj neprijatelj treba ići, LookAt rotira neprijatelja
prema istoj
−Definiramo smjer i brzinu kretanja neprijatelja: smjer kretanja će biti prema naprijed,
a brzina je definirana varijablom brzina
−Snimite skriptu, putem sučelja alata Unity postavite brzinu kretanja neprijatelja na 5,
varijablu rb postavite na komponentu Rigidbody koja se nalazi na objektu neprijatelja

91
Kreiranje neprijatelja – Ponašanje
neprijatelja
− Ponašanje ćemo nadograditi na način da neprijatelj neće cijelo vrijeme pratiti igrača
već samo ako se igrač približi na određenu udaljenost
− Kreirat i inicijalizirat ćemo nekoliko novih varijabli
− hvatanje: hvatamo li igrača ili ne
− udaljenostHvataj: definirati udaljenost igrača od neprijatelja na kojoj će neprijatelj
početi hvatati igrača
− udaljenostStop: definirati udaljenost igrača od neprijatelja na kojoj će neprijatelj
prestati hvatati igrača
− udaljenostBlizu: definirati na kojoj udaljenosti će se neprijatelj zaustaviti kada
dođe u neposrednu blizinu igrača
private bool hvatanje;
public float udaljenostHvataj = 15f;
public float udaljenostStop = 20f;
public float udaljenostBlizu = 2f; 92
Kreiranje neprijatelja – Ponašanje
neprijatelja
void Update() {
pozicijaIgraca = IgracKretanje.instanca.transform.position; Dohvaćamo poziciju igrača
pozicijaIgraca.y = transform.position.y;
if (!hvatanje) { Jesmo li u stanju hvatanja
if (Vector3.Distance(transform.position, pozicijaIgraca) <
udaljenostHvataj) { Ako se igrač dovoljno približi neprijatelju, varijablu hvatanje
hvatanje = true;} postaviti na istinu
} else {
if (Vector3.Distance(transform.position, pozicijaIgraca) > udaljenostBlizu) {
transform.LookAt(pozicijaIgraca); Ako je udaljenost veća od definirane
udaljenosti varijablom udaljenostBlizu,
rb.velocity = transform.forward * brzina;
neprijatelja pomičemo prema igraču
} else {
Ako se neprijatelj nađe u neposrednoj blizini igrača,
hvatanje = false;
varijablu hvatanje postavljamo na laž

} if (Vector3.Distance(transform.position, pozicijaIgraca) > udaljenostStop) {


hvatanje = false;}
Ako je udaljenost između neprijatelja i igraća veća od udaljenosti
} udaljenostStop, prestat ćemo s hvatanjem igrača 93

You might also like