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.5var 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.