Tai mašinu versta tekstas, kuriame gali būti klaidų!
Iš kur gaunama ši informacija?
Dauguma šio yra tik Godot oficialios dokumentacijos perpasakojimas. Žemiau rasite keletą naudingų nuorodų į oficialią dokumentaciją (kurią aš mieliau rekomenduoju nei šią Piggy, bet jei jums patinka ši – naudokite ją!)
Naudingi ištekliai:
Kitos naudingos nuorodos:
Kitos žaidimų varikliai?
Jei pageidaujate, galite naudoti kitus žaidimų variklius. Štai keletas kitų žaidimų variklių pavyzdžių:
Yra ir daug kitų, nedvejokite ir paieškokite, jei norite išbandyti ką nors kita!
Kas yra Godot?
Godot (tariamas Guh-doh) yra žaidimų variklis. Paprastai tariant, tai programa, leidžianti kurti žaidimus (arba įprastas programas, jei norite). Godot gali atlikti beveik viską, ką gali atlikti kiti žaidimų varikliai, tiek 2D, tiek 3D.
Pavyzdžiai žaidimų, sukurtų naudojant Godot: Godot Showcase
Ne tik indie žaidimai buvo sukurti naudojant Godot, Sonic Colors Ultimate buvo sukurtas naudojant Godot! 🦔🦔🦔
Kaip įsigyti Godot?
Galite atsisiųsti Godot iš:
- Oficialios svetainės: Godot Official Page.
- Arba Steam platformoje: Godot Steam.
Tiesiog atsisiųskite ir įdiekite (arba paleiskite per Steam).
Nustatykite projektą!
Kai paleidžiate Godot, pasirodys šis langas:
Čia jus paprašys pasirinkti programavimo kalbą – GDScript arba C#. GDScript yra labai panašus į Python.
Skirtumai tarp GDScript ir Python (be spalvų):
def hello():
text = "Hello world!"
print(text)
func hello():
var text = "Hello world!"
print(text)
Kintamiesiems Python tereikia įrašyti kintamojo pavadinimą. GDScript turite įrašyti var pirmiausia. Norėdami sukurti funkcijas, rašykite func vietoj def.
Scenos ir Mazgai
Vienas iš svarbiausių Godot koncepcijų yra Scenos ir Mazgai. Pradėkime nuo mazgų. Mazgas yra objektas Godot, ir jis gali atstovauti bet ką. Tai gali būti kažkas, kas atstovauja žaidėjui, priešui, mygtukui meniu, tekstui ekrane, bet ką nors. Scenos yra mazgų rinkinys.
Štai mes sukursime labai paprastą pavyzdį.
Dalis 1a – Nustatykite „player“ sceną
Viršutiniame Godot lange, paspauskite mygtuką „2D“, kad pakeistumėte vaizdą į 2D vaizdą.
Lango kairėje pusėje pamatysite šią sąsają:
Paspauskite mygtuką „Other Node“ ir ieškokite „CharacterBody2D“, pasirinkite jį ir paspauskite „Create“. Tai mazgas, naudojamas 2D žaidėjui. Galbūt pastebėsite įspėjamąjį trikampelį ⚠️ šalia „CharacterBody2D“ mazgo. Taip yra todėl, kad jam trūksta kai kurių dalykų, kurių jis norėtų.
Jei dešiniuoju pelės mygtuku spustelėsite mazgą, pamatysite mygtuką „+ Add Child Node…“. Naudokite jį ir pridėkite du mazgus: Sprite2D ir CollisionShape2D. Sprite2D naudojamas žaidėjui pridėti grafiką, o kitas – patikrinti susidūrimus. Taip pat galite juos pavadinti, jei tai palengvins sekimą. Aš pavadinau savo CharacterBody2D „Player“. Scena dabar turėtų atrodyti taip:
Dalis 1b – Ištaisyti ⚠️ CollisionShape2D
Įspėjamasis trikampelis šiame atveju yra tai, kad CollisionShape2D neturi faktinio susidūrimo. Tai galite ištaisyti spustelėję mazgą (kairėje), tada dešinėje pusėje pasirodys skydelis. Čia rasite daug informacijos apie mazgą, kurį galite keisti. Visiškai laisvai eksperimentuokite su viskuo, kas ten yra. Tačiau mes sutelksime dėmesį į „Shape“, nustatykite jį, pavyzdžiui, į RectangleShape2D. Tai nėra labai svarbu, nes čia nenaudosime susidūrimų.
Dalis 1c – Pridėti Spritą, grafiką
Jei spustelėsite Sprite2D kairėje, dešinėje pasirodys laukas, kuriame parašyta „Texture“. Čia galite įdėti paveikslėlį žaidėjui. Tiesiog vilkite paveikslėlį ir atleiskite jį lauke.
Taip atrodys po sprite’o pridėjimo.
Del 2 - Įvesties, valdiklių pridėjimas
Lango viršuje yra meniu: „Scene – Project – Debug – Editor – Help“. Spuskite „Project“, o tada „Project Settings“. Čia pasirodys meniu su daugybe nustatymų. Spuskite „Input Map“. Čia galite nustatyti klaviatūros mygtukus.
- Lauke „Add New Action“, įrašykite „left“, o tada spuskite „Add“.
- Tada pridėkite „right“, „up“ ir „down“.
- Jie bus žinomi kaip „Actions“
- Kiekvienam „Action“ galite pridėti mygtukus, spustelėdami + mygtuką dešinėje.
- Tiesiog spustelėkite klaviatūrą, tada spustelėkite Add.
- Pridėkite mygtukus prie visų veiksmų.
Dalis 3 – Skripto pridėjimas, valdančio žaidėją.
Kad galėtume pridėti žaidimo logiką, t. y. kažką padaryti su žaidėju, fonu ar bet kuo kitu žaidime, mums reikia skripto. Skriptai yra kodas ir gali būti parašyti dviem kalbomis: GDScript arba C#. GDScript yra numatytoji kalba.
- Spuskite „CharacterBody2D“ (aš jį pavadinau „Player“) mazgą.
- Spuskite mygtuką „Attach Script“ (žr. žemiau)
- Čia pasirodys langas, kuriame galite pasirinkti kalbą (pasirinkite GDScript) ir kelią (tiesiog palikite jį tokį, koks yra, bet galite jam suteikti pavadinimą), tada spuskite toliau. Čia pasirodys „Script“ langas. Iš pradžių jame nėra daug.
extends CharacterBody2D
# Dette er en enkel karakterkontroller.
# Tai paprastas simbolių valdiklis.
# Bevegelseshastighet.
# Judėjimo greitis.
@export var speed = 200
func _physics_process(delta):
# Hent input.
# Gaunamas įvestis.
var direction = Input.get_vector("left", "right", "up", "down")
# Beregn bevegelse.
# Apskaičiuojamas judėjimas.
var velocity = direction * speed
# Flytt karakteren.
# Perkeliamas simbolis.
move_and_slide()
Šiuo metu šis kodas tik sako, kad kodas turi priklausyti „CharacterBody2D“ tipo mazgui, kuris yra mūsų žaidėjas.
Mes čia pridėsime funkciją, kurią naudosime žaidėjui manipuliuoti:
extends CharacterBody2D
# Tai yra pagrindinis fizikos proceso metodas.
func _physics_process(delta: float) -> void:
return
Physics Process?
_physics_process yra funkcija, kuri atnaujinama kasvieną „kadrą“, tai yra apie 60 kartų per sekundę (numatytoji). Yra kita funkcija, pavadinimu _process, kuri atnaujinama nuolat. Jei norite, kad žaidėjas judėtų pastoviu tempu, naudokite _physics_process.
Čia turime įdėti kodą, kuris perkels žaidėją.
Dalis 4 – Pagrindinė įvestis
2 dalyje pridėjote įvesties mygtukus, dabar juos panaudosime. Yra įmontuotas objektas pavadinimu Input, kurį galime naudoti patikrinti, ar žaidėjas paspaudė tai, ką nustatėme „Input Map“.
Pabandykite įterpti šį kodą į _physics_process kodą:
if Input.is_action_pressed('right'):
velocity.x = 100
# Judėti dešinėn.
# Judėti į dešinę.
move_and_slide()
Kas yra move_and_slide()?
move_and_slide() yra įmontuota Godot funkcija, naudojama, kai norime faktiškai perkelti tai, ką ji veikia. Be jos žaidėjas nesijudės.
Warning
Tarpai tarp eilučių yra labai svarbūs, tai yra panašu į Python.
Kas nutinka, kai paleidžiate programą paspausdami paleidimo mygtuką Godot lange, o tada paspausite „dešinė“?
Jei dabar niekas nevyksta:
- Ar prisiminėte nustatyti ką nors „Input Map“?
- Ar parašėte
right, o neRight? T. y., ar tai, ką parašėte kode, sutampa su pavadinimu įvesties žemėlapyje?
Hele koden så langt
extends CharacterBody2D
func _physics_process(delta: float) -> void:
if Input.is_action_pressed('right'):
velocity.x = 100
move_and_slide()
Bandykite dabar pridėti kodą 'left', 'up', 'down'.
Kokia turi būti velocity.x reikšmė left? O kaip su up ir down?
Hele koden nå
extends CharacterBody2D
func _physics_process(delta: float) -> void:
if Input.is_action_pressed('right'):
velocity.x = 100
if Input.is_action_pressed('left'):
velocity.x = -100
if Input.is_action_pressed('down'):
velocity.y = 100
if Input.is_action_pressed('up'):
velocity.y = -100
move_and_slide()
Dalis 5 – Kodo taisymas
Galbūt pastebėsite, kad žaidėjas nesustoja, kai atleidiate kryptį. Tai galime pataisyti dabar!
Prieš visus if-us, įrašykite eilutę, kuri nustato velocity į 0. Tai galite padaryti parašydami velocity = Vector2()
Visi greičiai ir kryptys Godot yra vektoriai, tai matematinė sąvoka, į kurią dabar nesigilinsime, tačiau jei norite sužinoti daugiau apie tai, galite apsilankyti čia: Wikipedia vectors.
Hele koden nå
extends CharacterBody2D
func _physics_process(delta: float) -> void:
velovity = Vector2()
if Input.is_action_pressed('right'):
velocity.x = 100
if Input.is_action_pressed('left'):
velocity.x = -100
if Input.is_action_pressed('down'):
velocity.y = 100
if Input.is_action_pressed('up'):
velocity.y = -100
move_and_slide()
Kai paleidžiate žaidimą dabar, galite perkelti žaidėją:
Toliau galite pataisyti kodą, kad greitis nebūtų tik skaičius, bet būtų saugomas kitur.
Pavyzdžiui, galite (prieš funkciją) pridėti konstantą, kuri saugo greitį.
Hele koden til slutt med const
extends CharacterBody2D
const SPEED = 100
func _physics_process(delta: float) -> void:
velovity = Vector2()
if Input.is_action_pressed('right'):
velocity.x = SPEED
if Input.is_action_pressed('left'):
velocity.x = -SPEED
if Input.is_action_pressed('down'):
velocity.y = SPEED
if Input.is_action_pressed('up'):
velocity.y = -SPEED
move_and_slide()
Dalis 6 – Pažaiskite patys!
Jei grįšite į pirmąją dalį, Naudingi ištekliai, ten rasite ką dar galite pažaisti.
Po to galite pabandyti sukurti savo žaidimą. Ką sukursite, priklauso nuo jūsų! Jei norite sukurti kažką visiškai naujo, darykite tai! Jei norite pabandyti imituoti jau egzistuojantį žaidimą, darykite tai! Geriausias būdas mokytis – bandyti!




