20 – Godot – Elud ja vaenlased

Selles peatükis lisame mängule vaenlased,  millele pihta minnes, kaotab mängija elusid. Peale hüpates, aga saame vaenlase hävitada.

Vaenlase loomine

Leia endale mängu sobiv vastane (https://opengameart.org) ning impordi need oma projekti aknasse. Tekita uus stseen ning kasuta sõlme KinematicBody2D (1). Et vaenlane oleks animeeritud, siis kasutame AnimatedSprite sõlme (2, 4, 5). Kuna minu puhul tundub vaenlane liiga suur, siis teen selle natuke väiksemaks (Scale x=0.1 ja y=0.1)(3).

Et programm suudaks eristada, millega vaenlane kokku puutub, lisa CollisionShape2D sõlm. Arvan, et selleks kujundiks piisab ristkülikust. Jäta üles tühja ruumi, kuhu pärast lisame ala, millele hüpates vaenlane hävitatakse.

Salvesta lohista vaenlane Level1 stseeni testimiseks. Tekita vaenlase jaoks pesa, kust ta välja ei saa.

Lisame skripti, millega paneme vaenlase liikuma.

Koodi lisame lisaks liikumisele tingimuse, et kui vastu tuleb sein, siis muudetakse suunda. Nüüd kui testida, siis vaenlane peaks liikuma edasi-tagasi. Isegi kui mängija jääb talle ette. Kui mängus on rohkem vaenlasi ja kõik liikuma hakkavad, siis on see ressursi raiskamine. Seepärast lisatakse sõlm VisibilityEnabler2D (1) – lohista kast vaenlase suuruseks (2) ning aktiveeri kõik valikud (3).

Vaikimisi seiskab see vaenlase siis kui ta on sinust möödunud ja ekraanist väljas. Seepärast lisa _ready funktsiooni sisse rida, mis peatab protsessid, kuni mängija pole vaatevälja jõunud.

Nüüd lisa vaenlasi rohkem ja nad ei tohiks hakata enne liikuma.

Vaenlase hävitamine

Tekitame vaenlase kohale ala, kuhu peale hüpates vaenlane hävitatakse. Kasutame selleks Area2D sõlme ning joonistame natuke kitsama ristküliku pea kohale.

Lisame loodud alale signaali (Signals), et reageerib, kui mingi kehaga kokku puutub.

Topeltklikk signaalil body_entered(), vali skripti asukoht ning funktsiooni nimi.

Ja skripti lisame, kui kokkupuutujaks on Player, siis eemaldame stseeni (queue_free())

Salvesta ja testi.

Elude kuvamine (HealthBar)

Tekitame  ekraani üles serva eluriba, mis kuvab mitu protsenti elust alles on. Leia endale oma või kasuta minu leitud pilte.

Loo uus stseen ning lisa kaks sõle:

  • MarginContainer – võimaldab hõlpsalt lisada vaba ruumi serva ja graafika vahele.
  • TextureProgress – eluriba kuvamiseks

Selekteeri TextureProgress ning lisa seadetes vastavad pildid (Under, Progress)

Alguses pole progressi riba näha, sest selle väärtus on 0. Muuda testimiseks see natuke suuremaks, et näha tulemust.

Kui see töötab, siis lohista riba mängija sõlme külge ja lohista servast soovitud kaugusele. Jälgi, et eluriba liiguks ekraaniga kaasa.

Ja omistame talle mängija elude väärtuse.

Lisame mängijale Area2D sõlme, et tuvastada, kas too puudub kokku vaenlasega.

Lisame signaali body_entered() ning täiendame selle koodiga, et kui puutub kokku “zombie”-ga, siis võetakse 25% eludest  maha.

Vajadusel säti vaenlasega kokkupuutuvat ala – natuke suurem kui teised alad. Täienda koodi ise nii, et kui elud jõuavad nulli, siis stseen taaskäivitatakse.

Elude täiendamine

Kasutasime eelnevalt sisseehitatud signaale. Nüüd teeme oma signaali, mille abil saab mängija elusid juurde. Leia endale sobiv ikoon, loo uus stseen ning loo nagu ikka vastavad sõlmed: Area2D, Sprite ja CollisionShape2D.

Lisame skripti faili ning kõigepealt tavalise signaali body_entered().

Lisa süda kaardile. Nüüd kui mängija läheb südame vastu, siis kaob see ära. Täiendame koodi oma signaaliga (signal take_health). Ja paneme skripti koodi, mis saadab signaali teele (emit_signal("take_health")).

Nüüd kui süda selekteerida, siis peaksid nägema nimekirjas oma loodud signaali.

Tee signaalil topeltklikk ja viita skriptile, kus on mängija elud. Lisa kood, mis lisab elusid juurde.

Lisa kontroll, et elusid ei lisataks üle 100%.

 

Viimased postitused

Meist

metshein.com on pakkunud juba üle kümne aasta tasuta eestikeelseid infotehnoloogiaga seotud kursusi. Sama kurssi püütakse järgida ka edaspidi. Eesmärk muuta arvutiõpe võimalikult lihtsaks!

metshein.com: parim eestikeelne koolitusportaal

Autorist ja kontakt: kliki siia

Hetkel õpivad:

There are no users currently online

Kontrolli tunnistust

Tööribale