A játékosok mozgása döntő szerepet játszik a Godot játékok vonzóbbá tételében. Tanuld meg, hogyan kell megvalósítani.

A játékosok mozgásának megvalósítása alapvető szempont a lebilincselő játékok létrehozásában a Godot Game Engine-ben. A játékosok mozgása lehetővé teszi a felhasználók számára, hogy irányítsák a karaktereket, felfedezzék a játékvilágokat, és kölcsönhatásba léphessenek a játékkörnyezet különböző elemeivel.

A Godot játék beállítása

A kezdéshez hozzon létre egy új 2D-s projektet a Godot Game Engine. Ezután kövesse az alábbi lépéseket a játékos mozgásának hozzáadásához a játékhoz

Hozzon létre egy új jelenetet a jobb gombbal kattintva Fájlrendszer panelt, majd válassza ki Új mappa és elnevezni Jelenetek. Benne Jelenetek mappát, kattintson a jobb gombbal, és hozzon létre egy új 2D-s jelenetet. Mentse el megfelelő néven, pl. Player.tscn.

A cikkben használt kód itt érhető el GitHub adattár és az MIT licence alapján ingyenesen használható.

Add hozzá a CharacterBody2D csomópontot a helyszínre kattintva

Csomópont hozzáadása gombot, és válassza ki CharacterBody2D csomópontkönyvtárból.

A... val CharacterBody2D kiválasztott csomópontot, kattintson a Gyermek csomópont hozzáadása gomb hozzáadásához a CollisionShape2D. Állítsa be a formáját CollisionShape2D hogy megfeleljen a játékos méreteinek. Az egyszerűség kedvéért használhat téglalap formát.

Ezután adja hozzá a Sprite2D összetevő a CharacterBody2D csomópontot, és válassza ki a játékos karakterének megfelelő sprite-ot.

Játékos mozgásának hozzáadása a billentyűzet bevitelével

Most hozzáadhatja a játékos mozgását a billentyűzet bevitelével a Player.gd forgatókönyv.

Hosszabbítsa meg a CharacterBody2D csomópont, állítsa be a mozgási sebességet, és kapja meg a bemenetet a nyílbillentyűkkel (ui_left, ui_right, ui_up, ui_down). Számítsa ki a mozgási sebességet a beviteli irány alapján, normalizálja, majd mozgassa a lejátszót a segítségével mozog_és_ütközik funkció a _fizikai_folyamat módszer.

extends CharacterBody2D

var speed = 300

func _physics_process(delta):
var input_dir = Vector2.ZERO
if Input.is_action_pressed("ui_left"):
input_dir.x -= 1
if Input.is_action_pressed("ui_right"):
input_dir.x += 1
if Input.is_action_pressed("ui_up"):
input_dir.y -= 1
if Input.is_action_pressed("ui_down"):
input_dir.y += 1

velocity = input_dir.normalized() * speed
move_and_collide(velocity * delta)

Forgatás hozzáadása

Ha azt szeretné, hogy a játékos a mozgás irányába nézzen, forgathatja a lejátszót. Frissítse a Player.gd script a következőképpen:

extends CharacterBody2D

@export var speed = 400
@export var rotation_speed = 1.5

var rotation_direction = 0

func get_input():
rotation_direction = Input.get_action_strength("ui_right") - Input.get_action_strength("ui_left")
velocity = transform.x * (Input.get_action_strength("ui_up") - Input.get_action_strength("ui_down")) * speed

func _physics_process(delta):
get_input()
rotation += rotation_direction * rotation_speed * delta
move_and_slide()

A játékos a mozgás irányába fog forogni. A forgási sebesség a gombbal állítható be forgási sebesség változó.

Játékos mozgásának hozzáadása egérbevitellel

Most már végrehajthatja a játékos mozgását az egér bemenetével, hogy a lejátszót az egérkattintás helyére mozgassa, vagy a játékost az egérmutató felé fordítsa:

extends CharacterBody2D

@export var speed = 300

func _physics_process(delta):
if Input.is_action_just_pressed("click"):
var target_position = get_global_mouse_position()
var direction = (target_position - global_position).normalized()
velocity = direction * speed * delta
move_and_collide(velocity)

Ebben a kódban a játékos az egérkattintás pozíciója felé mozog, amikor a kattintson akció indul el. A lejátszó sebessége a gombbal szabályozható sebesség változó.

Ezenkívül az egér alapú elforgatást is megvalósíthatja az alábbiak szerint:

extends CharacterBody2D

func _physics_process(delta):
var mouse_position = get_global_mouse_position()
var target_direction = (mouse_position - global_position).angle()
rotation = target_direction

Ebben a verzióban a játékos sprite közvetlenül az egérmutató pozíciójával néz.

Kiegészítő funkciókkal együtt

Míg az alapvető játékosmozgás elengedhetetlen a legtöbb játékhoz, további funkciók hozzáadásával a játékos élménye a következő szintre emelkedhet. Íme néhány izgalmas funkció, amelyeket érdemes megfontolni a játékban a játékosok mozgásának fokozása érdekében:

Ugrás

Ugrás mechanika megvalósítása lehetővé teszi a játékosoknak, hogy eligazodjanak az akadályok között, magasabb platformokat érjenek el, és egy extra interaktivitási réteget adnak a játékvilághoz. Szabályozhatja az ugrás magasságát, és animációkat adhat hozzá, hogy vizuálisan vonzó legyen.

Dash vagy Sprint

A kötőjel képesség lehetővé teszi a játékos számára, hogy gyorsan mozogjon egy rövid sorozatra, ami hasznos lehet az ellenség elkerülésére vagy a kihívást jelentő területek átkelésére. Ez a funkció dinamikus elemet ad a játékmenethez, és fokozza a játékos irányíthatóságát.

Fali csúsztatás és mászás

A fali csúsztatási és mászási mechanika bevezetése lehetővé teszi a játékosoknak, hogy kölcsönhatásba lépjenek a függőleges felületekkel. A játékosok lecsúszhatnak a falakról, fali ugrásokat hajthatnak végre, vagy akár át is léptethetnek bizonyos akadályokat. Ez a funkció különösen népszerű a platformer játékokban.

Platformer mechanika

Platformer játékokhoz, gravitációt, gyorsulást és lassítást is beépíthet a sima és valósághű mozgásélmény érdekében. Ezeknek a mechanikának a finomhangolásával a játék kifinomultabbá és élvezetesebbé válik.

Ne feledje, hogy a további funkciók sikeres megvalósításának kulcsa a kiegyensúlyozás és a játékmenetbe való zökkenőmentes integrálása. Mindegyik funkciónak ki kell egészítenie a játékos alapvető mozgásmechanikáját, és hozzá kell járulnia az általános játékélményhez.

A játékosok mozgásának hozzáadásának bevált gyakorlatai

Amikor a játékosok mozgásáról van szó a Godot játékban, kövesse ezeket a bevált gyakorlatokat nemcsak tisztábbá és hatékonyabbá teszi a kódot, hanem hozzájárul a jobb lejátszóhoz is tapasztalat:

Külön aggodalmak

Szervezd a játékos mozgási logikáját külön függvényekbe vagy szkriptekbe. Például hozzon létre egy szkriptet a játékos bemenetének kezelésére, egy másikat a karakterek mozgására, és esetleg még egyet az animációk kezelésére.

Az aggályok elkülönítése modulárisabbá és könnyebben karbantarthatóbbá teszi a kódot, valamint elősegíti a csapattagok közötti jobb együttműködést.

Használja a Delta időt

A mozgás kiszámításakor mindig szorozza meg az értékeket a delta idővel (delta), hogy biztosítsa a zökkenőmentes mozgást a különböző képsebességek között. A deltaidő az utolsó képkocka óta eltelt időt jelenti, és biztosítja, hogy a lejátszó egyenletes sebességgel mozogjon, függetlenül az eszköz teljesítményétől.

Korlátozza a mozgási sebességet

Állítsa be a lejátszó maximális mozgási sebességét, hogy elkerülje a nem szándékos nagysebességű mozgást. Ez a korlátozás hasznos lehet annak megakadályozására, hogy a játékosok megsértsék a játék fizikáját, vagy ütközésérzékelési problémákkal szembesüljenek.

Fontolja meg a fizikai rétegeket és az ütközési maszkokat

A Godot lehetővé teszi ütközési rétegek és maszkok konfigurálását a játék különböző objektumaihoz. A rétegek és maszkok megfelelő beállítása lehetővé teszi annak szabályozását, hogy mozgás közben mely objektumok léphetnek kapcsolatba egymással. Előfordulhat például, hogy a játékos szilárd tárgyakkal ütközik, de nem halad át nem szilárd tárgyakon.

Vizuális és audio visszajelzés hozzáadása

Valósítson meg vizuális effektusokat és hangjelzéseket, hogy visszajelzést adjon a játékosoknak mozgás közben. Például, ha porszemcséket ad hozzá, amikor a lejátszó fut vagy lép hangot, fokozhatja az elmerülés és az elkötelezettség érzését.

A Godot-játékok vonzóbbá tétele a játékosok mozgásával

A folyékony és érzékeny mozgásmechanika jelentősen javíthatja az általános játékos élményt. Legyen szó egy hatalmas világ felfedezéséről, az ellenségek elkerüléséről vagy a rejtvények megoldásáról, a játékosok gördülékeny mozgása fokozza az elmerülést, és leköti a játékosokat.

A játékosmozgások GDScript és CharacterBody2D csomópont segítségével történő megvalósításával dinamikus és élvezetes játékélményeket teremthetsz. A szabad mozgás és a játékvilággal való interakció képessége felhatalmazza a játékosokat, és úgy érzik, hogy kapcsolódnak a virtuális környezethez.