Most, hogy a darabok már készen vannak, ideje elkészíteni az első tényleges pályát is.
Pálya készítése sablonból
Válasszuk a menüben a Scene -> New Inherited Scene... lehetőséget. A felugró ablakból válasszuk ki a PalyaSablon.tscn-t, majd nevezzük át az újonnan létrejövő sceneroot node-ját "Palya01"-re és mentsük is el ezen a néven.
Láthatjuk, hogy az alatta lévő node-ok ki lettek szürkítve. Nem kell megijedni, ez csak azt jelzi, hogy azok az alap scene-ből érkeztek, ha új node-ot adunk hozzá, az ezután is "rendesen" fog megjelenni.
Jelöljük ki a Teglaknode-ot és adjunk hozzá egy Tegla-t - [Ctrl] + [Shift] + [A] - majd helyezzük el a játékterület egy nekünk tetsző pontján. A [Ctrl] + [D] gyorsbillentyűvel gyorsan készíthetünk másolatokat. Hozzunk létre pár téglát, például így:
Ha végeztünk a lerakással, a [Ctrl] vagy a [Shift] billentyűt nyomva tartva több téglát is kijelölhetünk, hogy egyszerre színezzük át őket, vagy változtassuk a pajzsaik értékét a jobb oldali panel tetején. Az eredményt nem fogjuk egyből látni, helyette át kell váltanunk a Teglascene-re, ott nyomni egy mentést, majd visszaváltva a Palya01scene-re, már láthatjuk a színes tégláinkat, remélhetőleg ez a jövőben egyszerűsödni fog.
A meglévő script-ek kiegészítése
Nyissuk meg a Menuscript-et és adjuk hozzá, a korábban létrehozott _on_Jatek_pressed() függvényhez, a következő sort:
get_tree().change_scene("res://Palya01.tscn")
Indítsuk el a játékot az [F5] billentyűvel. A főmenüben, a Játék gombra kattintva, most már be kell, hogy töltse az első pályát. A labdát a bal egérgombbal tudjuk kilőni, de egyelőre még nem fogja kiütni a téglákat, viszont máris találhatunk egy bugot. Ha megnyomjuk a bal egérgombot, miközben lefelé jön a labda, ismét ki fog lőni, felfelé.
Javítsuk ki gyorsan! Nyissuk meg a Labdascript-et, és hozzunk létre egy új változót, kilove néven:
extends RigidBody2D
[...]
var kilove = false
Az _input(event)-et módosítsuk így:
func _input(event):
if kilove == false:
if event is InputEventMouseButton:
if event.pressed and event.button_index == BUTTON_LEFT:
linear_velocity = Vector2(0, -600)
kilove = true
Végül adjuk még hozzá ezt a pár sort a script-hez:
# szorzó függvény létrehozása# ezzel kaphatunk extra pontokat, ha anélkül ütünk ki több téglát,# hogy az újra az ütőhöz érne
func aktualis_szorzo(szorzo):
# a SzorzoSzam nevű címkére is kiírjuk ezt az értéket
get_parent().SzorzoSzam.text = str(szorzo)
func _on_Labda_body_entered(body):
# kiegészítjük a korábban létrehozott if utasítást
if body.get_name() == "Uto":
[...]
# hívjuk a szorzo függvényt 0 értékkel,# azaz lenullázzuk a szorzót, ha hozzáér az ütőhöz
aktualis_szorzo(0)
# ha a body, a korábban létrehozott "tegla" group tagja
if body.is_in_group("tegla"):
# akkor az aktuális szorzóhoz hozzáadunk 1-et
szorzo(get_parent().szorzo + 1)
# ha a tégla pajzsa nagyobb, mint 1
if body.pajzs > 1:
# akkor kivonunk belőle 1-et
body.pajzs -= 1
# és frissítjük a kiírást is
body.get_node("Pajzs").text = str(body.pajzs)
# különben
else:
# töröljük a téglát
body.queue_free()
[...]# végül a labda törlődésekor
func _exit_tree():
# szintén nullázzuk a szorzót
aktualis_szorzo(0)
# mielőtt létrehozzuk az új labdát
get_parent().labda_letrehozasa()
Hozzunk létre a fentiek alapján, legalább még egy pályát. Semmi pánik, a kódot nem kell megírni újra, csak egy másolat kell a PalyaSablon-ról, amire lepakoljuk a téglákat. :)