12 – Godot – Gravitatsioon (maapind, hüppamine)

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

Level 1 loomine

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!

Gravitatsiooni loomine

Eelmises peatükis kasutasime velocity = Vector2(SPEED,0) funktsiooni, kus muutsime x-suunda ja y-suund ehk ülevalt-alla on 0.  Gravitatsiooni lisamiseks peame muutma y-suunda. Seepärast võiks x- ja y-suunda lahku lüüa velocity.x = SPEED. Siis saame suurendada y-suunda mingi arvu võrra.  Samas võiks selle läbi korrutada ka _deltaga, mis tagab, et mängu füüsika töötab ühtlaselt erinevatel riistvaradel ja erinevate kaadrisageduste juures.

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, siis lisame liikumise omaette funktsiooniks func run()

Maapinna loomine

Leia eelmises peatükis näidatud veebilehtedelt omale sobilik maapind või kasuta sama, mida mina (näiteks https://www.gameart2d.com/free-platformer-game-tileset.html). 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 Sprite2D.

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.

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

Paneme tegelase hüppama, kui oleme ühe korra vajutanud klahvi üles (Input.is_action_just_pressed("ui_up")). JUMP_FORCE määrab, kui kõrgele ta hüppab. Muuda GRAVITY väärtust, et hüppamine tunduks piisavalt hea.

Tingimuslausesse lisasin is_on_floor() meetodi, et hüpata saab ainult siis, kui jalad maapinda puutuvad.

 

 

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

Kontrolli tunnistust

Tööribale