07 – Godot – Klaviatuurile ja hiirele reageerimine (Ülesanne6)

_process ja delta

Nagu eelmises peatükis tutvusime, siis skripti lisamisel tekitatakse kaks funktsiooni:

  • _ready() – funktsioon käivitab koodi ühe korra. Tavaliselt lähevad siia mängu algseaded jms
  • _process() – siia funktsiooni lisatud kood hoitakse pidevalt töös ehk käivitatakse iga kaadri vahetusega. Kaadrite vahetamise kiirust mõõdab parameeter delta. Näiteks võime delta väärtuse konsoolis kuvada.

godot

Klaviatuurile reageerimine (Input Map)

Mängu juhtimiseks on erinevaid viise. Arvutite puhul on selleks kõige populaarsemad klaviatuurid ja hiired. Kindlasti järgnevad nendele erinevad mängupuldid, puutetundlikud ekraanid (ka telefonid jms), liikumise tuvastamise kontrollerid, virtuaalreaalsuse süsteemid jne. Jääme esialgu klaviatuuri ja hiire peale ning kasutame kaardistamise meetodit Input Map. Kaardistamisel on mitu eelist. Näiteks saad ühele tegevusele lisada mitu erinevat klahvi. Samas selle kasutamine võimaldab luua mängus võimalus, kus kasutaja saab klahve ise muuta.

Teen harjutuseks uue projekti, alustan lihtsa Node’iga ja lisan sellele skriptifaili. Mine Project > Project Settings > Input Map.

godot

Lisa Action reale nimetus, kuidas soovid klahvivajutust välja kutsuda. Näiteks “hyppa” ja kliki Add nupule.

Nüüd lisame sellele soovitud klahvid. Kliki “+” nupule ja vali Key.

godot

Kui pisike aken avaneb, siis vajuta soovitud klahvile, mille nimetus ilmub akna keskele. Näiteks vajutasin tühikule. Kinnitamiseks vajuta OK.

godot

Samale ‘hyppa’ nimetusele saab veel tegevusi lisada. Kõiki kaardistatud tegevusi saab igal ajal muuta.

Kasutame Input (https://docs.godotengine.org/en/3.2/classes/class_input.html#input) klassi klahvivajutusele reageerimiseks.

Sisestuse juures kasutasime hetkel meetodit is_action_just_pressed , mis reageerib korra, isegi kui nuppu all hoida. Kui soovid, et tegevus toimuks, kuni klahv on all, siis kasuta is_action_pressed.

Hiirele reageerimine

Hiirele reageerimine toimub sama moodi nagu klaviatuurile. Saad isegi sama nimetuse alla lisada. Vajuta “+” ja vali Mouse Button.

godot

Avanenud aknas tuleb märkida, millisele klahvile või rulliku tegevusele reageerida.

Ja kood on ka sarnane klaviatuuri omaga.

Ülesanne 6

Loo tulistamismäng, kus tühikule vajutades kaotab koletis elusid 8-12. Sinu relval on salve mahtuvus 5 padrunit, mida tuleb mingi klahvivajutusega laadida. Kuva:

  • vaenlase elud
  • hetke damage
  • salves olevate padrunite arv
  • tegevus – kas laetakse või lastakse

Mäng saab läbi, kui vaenlane on hävitatud. Kuva:

  • skoor
  • mitu lasku lasti
  • kui efektiivne oli laskuri tabamus (skoor/tabamisprots)

Tegevus lisa funktsioonidega!!!

Abiks:

  • tekita muutujad, mis hoiavad endas: vaenlaseElud, salveSuurus, skoor, tabamisprots
  • lisa tegevus _protsess sisse funktsioonid, mis käivituvad kui vajutada tühikut (laskmine) või klahvi R (laadimine (reload))
  • loo vastavad funktsioonid ja sinna tegevused
    • tulistamise tegevus:
      • salvest eemaldatakse padrun
      • loetakse laskmiste arv
      • tekita random, kas sai vaenlasele pihta ( var pihtas = bool(randi() % 2) )
      • kui sai pihta, siis võetakse elusid maha
      • kui laskis mööda kuvatakse tekst
    • laadimine
      • padrunite arv salves taastatakse
  • lisa tingimus, et mäng saab läbi, kui vaenalsel elud otsas
    • mängu läbisaamiseks kasuta get_tree().quit()

 

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