Godot: Oinarrizko mugimendua

Standard

Pertsonaia

Lehenik eta behin pertsonaia bat sortu behar da. Hasieran gauza asko egin behar direla dirudi, baina denek hartzen dute zentzua.

Godot programak bi oinarri ditu nodoak eta eszenak. Eszena batek nodo anitzak izan ditzake eta nodoek ere azpinodo gehiago.

Lenengo KinematicBody2D nodoa sortuko dugu, honen azpian Sprite eta CollisionShape2D.

Sprite nodoan Texture propietatean gure karpetan dugun irudiaren bat jarriko dugu eta CollisionShape2D nodoan Shape RectangleShape2D aukeratu dut dudan irudirako gehien egokitzen dena delako. Amaitzeko gehitutako Shape hori koadroaren barneko botoiekin handitu dut nire irudia bete arte.

Gorde: Orain gordetzeko unea da, lana gal ez dezagun. Honetarako KinematicBody2D.tscn izenarekin gordeko da. (Gordetzean nodo nagusiaren izena hartzen du, gomendagarria da nodo honi beste izena jartzea, adibidez pertsonaia)

Azalpena

KinematicBody2D nodoa gure pertsonaiaren nodo nagusia izango da, honek propietate zinematikoak emango dizko. Hau da, mugitzeko aukerak.

Honen barruan Sprite nodoak irudi bat izateko aukera emango dio eta CollisionShape2D beste objektuak ukitzen dituen kontrolatzeko erabiliko da.

Mugimendua

Behin pertsonaia sortuta, orain mugitzea nahi dugu. Honetarako bi gauza egin behar dira:

  • Mugimendua sortuko duten gertaerak definitu eta izena eman (Project -> Project Settings -> Input Map)

Action eta gero gertaeraren izena idatzi eta Add sakatu. Gero sortu den elementuan + ikurrari eman eta key aukeratu tekla bat konfiguratzeko, azkenik teklatuan tekla hori sakatu eta saguarekin Ok eman.

Irudian Gora gertaera gehitzen dut, eta hau “Gora gezia” edo “W” teklak sakatzen direnean aktibatzen da.

Antzekoa egiten dugu Behera, Eskuinera eta Ezkerrera gertaerekin.

  • Hauetako gertaera bat ematen denean gertatu behar dena kodean idatzi.

Orain KinematicBody2D izenean eskuineko klik egin eta Attach Script aukeratu. Utzi parametroak dauden bezala eta agertzen den leihoan hurrengo kodea idatzi behar da.

extends KinematicBody2D

var abiadura = 200
var velocity = Vector2()

func _physics_process(delta):
	velocity = Vector2()
	if Input.is_action_pressed("Gora"):
		velocity.y = -abiadura
	if Input.is_action_pressed("Behera"):
		velocity.y = abiadura
	if Input.is_action_pressed("Eskuinera"):
		velocity.x = abiadura
	if Input.is_action_pressed("Ezkerrera"):
		velocity.x = -abiadura
	
	move_and_slide(velocity)

Dena egiaztatzeko goiko eskuinaldeko klaketa eta play duen ikonoa sakatu eta egindakoa dastatzeko aukera izango duzu.

Azalpena

Lehenengo lerroa Godotek berak jartzen du. Honek KinematicBody2D objektua izateagatik propietate batzuk hartzen dituela esan nahi du, honela guri lana aurreztuz.

Jarraian bi aldagai definitzen ditugu: abiadura, mugimendu kantitatea adierazten duena, eta velocity uneko mugimendua gordeko duena, azken hau Vector2() motakoa da, hau da x eta y propietateak dituena.

_physics_process(delta) funtzioak jokoaren frame bakoitzean deitzen da eta delta parametroa bi deien artean pasa den denbora da. Funtzio honetan eguneratuko dugu gure nodoa.

velocity = Vector2(), berriro aldagaia (0,0)n uzten du. Eta gero baldintza bakoitzak egiaztatzen du zer gertaera jaso den eta horren arabera eguneratzen du velocity aldagaia.

Amaitzeko mugituko den velocity jakinda, kynematicBody2D objektuaren move_and_slide() funtzioa erabiltzen dugu kalkulatutako mugimendu hori eigteko.

Oharra: Nabarmendu behar da pantailaren koordenatu sistema zertxobait berezia dela. Goiko-ezkerreko erpina (0,0) koordenatua adierazten du, eskuinera x handitzen joango da, baina behera egiterakoan y handituko da. Honengatik “Gora” sakatzen dugunean -abiadura egiten dugu, goranzkoa negatiboa delako.