12 – Godot – Gravitatsioon

Paneme selles peatükis oma tegelaskuju mööda maad jooksma ja hüppama.

Gravitatsiooni lisamine

Alustame kõige pealt sellest, et hoiame mängija ja keskkonna eraldi ehk teeme uue stseeni (Scene>New Scene) ja sõlme (Node2D). Sõlme nimeks näiteks “Level1”.

Lingime stseeni Player.tscn.

Ja paneme sõlme nimeks “Player”.

Player sõlme peal on nupp “Open In Editor“, mis aitab avada lingitud stseeni. Salvesta!

Ehk liigumegi Player sõlme, avame koodi ning lisame gravitatsiooni. Ehk muudame y-väärtust suunaga alla motion.y += 10

Kuna me tegime Player-stseeni esimesena, siis määrati see põhistseeniks. Aga nüüd soovime, et Level1 oleks selleks. Tee Level1.tscn peal parem klikk ja vali Set As Main Scene.

Nüüd kui käivitad, peaks tegelaskuju allapoole langema.

Koodi korrastamine

Enne kui edasi läheme, silume natuke koodi. Lisame väärtused konstantidena, näiteks SPEED ja muudame tegevused funktsioonideks näiteks func run()

Maapinna loomine

Leia eelmises peatükis näidatud veebilehtedelt omale sobilik maapind või kasuta sama, mida mina. Lohista pilt oma projektiaknasse.

Et oleks lihtsam maapinnaga töötada, muudame alusruudustiku suurust 64×64 pikslit ja paneme selle haakuma. Snapping Options>Configure Spap…>Grid Step.

Maapinna loomiseks loo uus sõlm StaticBody2D ja selle sisse Sprite.

Lohista maaping Sprite>Texture aknasse

Kuna maapinna fail on liiga suur, siis lohista see väiksemaks. Kuna vaikimisi haakub kujund keskkoha kaudu, siis lülita sisse Snap Relative.

Nüüd aga kui mäng käivitada, siis tegelaskuju kukub läbi maapinna. See juhtub sellepärast, et puudub sõlm, mis tuvastab objektide kokkupuutumist. Sellest annavad märku ka Scene aknas olevad hoiatused.

Hoiatusel klikkides saamegi teada, et puudu on CollisionShape2D või CollisionPolygon2D.

Võtame esimesena ette Player.tscn ja lisame uue sõlme CollisionShape2D.

Nüüd liigub hoiatus edasi ja sel uus probleem – kujund määramata. Vali CollisionShape2D>Shape alt sobilik kujund ja määra ära, milline reageerib teistega. Lisades samasuguse kujundi nagu mul praegu, siis pea alune tühi ala on ka reageeriv. Tulevikus tuleks natuke keerulisem kujund lisada.

Tee sama maapinna kujundiga. siinkohal on kujundkindlasti lihtsam

Testi, kas tegelaskuju vajub läbi maa või mitte.

Et saaksime maapinda dubleerida, võtame selle kõigepealt gruppi

Seejärel lisame maapinna Node2d alla.

Nüüd dubleeri maapinda (Ground) ja tekita kaart, kus tegelaskuju saaks ringi hüpata.

Tegelaskuju hüppamine

Kuigi nö. gravitatsioon töötab, siis hüppamise jaoks tuleb ikkagi määrata, kuhu poole jääb taevas const UP = Vector2(0,-1) ja lisame selle funktsiooni  move_and_slide(motion, UP)  juurde. Tekitame ka konstandid seadete hoidmiseks.

Hetkel on gravitatsioon nõrk ja hüppamine uimane. Selle parendamiseks suurenda gravitatsiooni ja hüppamise kõrgust. Teine probleem on siin see, et kui hüpata mitu korda, siis hakkab hoopis üles liikuma. Seepärast lisame tingimusse kontrolli, et hüpata saab, kui see tegelaskuju on vastu maad.

Üks probleem on veel, et kui tegelaskuju kukub, siis muutub see ajas pööraselt kiireks. Seepärast tuleks y-koordinaat uuesti nullida.

 

 

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