Mängija liikumine mängib Godoti mängude kaasahaaravamaks muutmisel otsustavat rolli. Siit saate teada, kuidas seda rakendada.
Mängijate liikumise rakendamine on Godoti mängumootoris kaasahaaravate mängude loomise põhiaspekt. Mängija liikumine võimaldab kasutajatel juhtida tegelasi, uurida mängumaailmu ja suhelda erinevate mängukeskkonna elementidega.
Godot' mängu seadistamine
Alustamiseks looge uus 2D-projekt Godoti mängumootor. Seejärel järgige neid samme, et lisada mängule mängija liikumine
Looge uus stseen, paremklõpsates Failisüsteem paneel, seejärel valides Uus kaust ja sellele nime panemine Stseenid. Sees Stseenid kausta, paremklõpsake ja looge uus 2D-stseen. Salvestage see sobiva nimega, nt Player.tscn.
Selles artiklis kasutatud kood on saadaval selles GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.
Lisa CharacterBody2D sõlm sündmuskohale, klõpsates nuppu Lisa sõlm nuppu ja valides CharacterBody2D sõlme raamatukogust.
Koos CharacterBody2D sõlm valitud, klõpsake nuppu
Lisa alamsõlm nuppu, et lisada a Kokkupõrkekuju2D. Reguleerige kuju Kokkupõrkekuju2D et see vastaks mängija mõõtmetele. Lihtsuse huvides saate kasutada ristkülikukujulist kuju.Järgmisena lisage a Sprite2D komponenti CharacterBody2D sõlme ja valige oma mängija tegelasele sobiv sprait.
Mängija liikumise lisamine klaviatuurisisendi abil
Nüüd saate lisada mängija liikumise, kasutades klaviatuuri sisendit Player.gd stsenaarium.
Laiendage CharacterBody2D node, määrake liikumiskiirus ja hankige sisend nooleklahvide (ui_left, ui_right, ui_up, ui_down) abil. Arvutage liikumiskiirus sisendsuuna põhjal, normaliseerige see ja seejärel liigutage mängijat kasutades liikuda_ja_kokkupõrge funktsioonis _füüsika_protsess meetod.
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)
Rotatsiooni lisamine
Selleks, et mängija oleks näoga liikumissuunas, saate oma mängijale lisada pöörlemise. Värskendage Player.gd skript järgmiselt:
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()
Mängija pöörleb liikumissuunas. Pöörlemiskiirust saab reguleerida nupuga pöörlemiskiirus muutuv.
Mängija liikumise lisamine hiire sisendi abil
Nüüd saate rakendada mängija liikumist hiire sisendi abil, et viia mängija hiireklõpsu asukohta või panna mängija näoga hiirekursori poole:
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)
Selles koodis liigub mängija hiireklõpsu positsiooni suunas, kui klõpsa toiming käivitatakse. Mängija kiirust saab juhtida kasutades kiirust muutuv.
Lisaks saate rakendada hiirepõhist pööramist järgmiselt.
extends CharacterBody2D
func _physics_process(delta):
var mouse_position = get_global_mouse_position()
var target_direction = (mouse_position - global_position).angle()
rotation = target_direction
Selles versioonis on mängija sprait otse suunatud hiirekursori asendisse.
Kaasa arvatud lisafunktsioonid
Kuigi mängija põhiliikumine on enamiku mängude jaoks hädavajalik, võib lisafunktsioonide lisamine viia mängija kogemuse järgmisele tasemele. Siin on mõned põnevad funktsioonid, mida võiksite oma mängus kasutusele võtta, et mängijate liikumist parandada.
Hüppamine
Hüppemehaanika rakendamine võimaldab mängijatel navigeerida takistustel, jõuda kõrgematele platvormidele ja lisada mängumaailmale interaktiivsuse lisakiht. Saate juhtida hüppe kõrgust ja lisada animatsioone, et muuta see visuaalselt atraktiivseks.
Dash või Sprint
Kriips võimaldab mängijal lühikeseks sariseks kiiresti liikuda, mis võib olla kasulik vaenlastest kõrvalehoidmiseks või raskete alade ületamiseks. See funktsioon lisab mängule dünaamilise elemendi ja suurendab mängija kontrollitaju.
Seina libisemine ja ronimine
Seinte libisemise ja ronimise mehaanika tutvustamine võimaldab mängijatel vertikaalsete pindadega suhelda. Mängijad saavad seinast alla libiseda, seinahüppeid sooritada või isegi teatud takistusi ületada. See funktsioon on eriti populaarne platvormimängudes.
Platvormimehaanika
Platvormimängude jaoks, saate sujuva ja realistliku liikumiskogemuse loomiseks kasutada gravitatsiooni, kiirendust ja aeglustumist. Nende mehaanika peenhäälestus võib muuta mängu lihvitavamaks ja nauditavamaks.
Pidage meeles, et lisafunktsioonide eduka rakendamise võti peitub nende tasakaalustamises ja sujuvas mängus integreerimises. Iga funktsioon peaks täiendama mängija põhilist liikumismehaanikat ja aitama kaasa üldisele mängukogemusele.
Mängija liikumise lisamise parimad tavad
Kui tegemist on mängija liikumise rakendamisega oma Godoti mängus, järgige neid parimaid tavasid mitte ainult ei muuda teie koodi puhtamaks ja tõhusamaks, vaid aitab kaasa ka parema mängija loomisele kogemus:
Eraldi mured
Korraldage oma mängija liikumise loogika eraldi funktsioonideks või skriptideks. Näiteks looge skript mängija sisendi käsitlemiseks, teine tegelaste liikumiseks ja võib-olla veel üks animatsioonide käsitlemiseks.
Murede eraldamine muudab teie koodi modulaarsemaks ja hõlpsamini hooldatavaks ning soodustab paremat koostööd meeskonnaliikmete vahel.
Kasutage Delta aega
Liikumise arvutamisel korrutage oma väärtused alati deltaajaga (delta), et tagada sujuv liikumine erinevatel kaadrisagedustel. Delta aeg tähistab viimasest kaadrist möödunud aega ja tagab, et mängija liigub ühtlase kiirusega, olenemata seadme jõudlusest.
Piirata liikumiskiirust
Määrake oma mängijale maksimaalne liikumiskiirus, et vältida tahtmatut kiiret liikumist. See piirang võib olla kasulik, et takistada mängijatel mängu füüsikat rikkumast või kokkupõrke tuvastamisega seotud probleeme.
Kaaluge füüsikakihte ja kokkupõrkemaske
Godot võimaldab teil konfigureerida oma mängu erinevate objektide jaoks kokkupõrkekihte ja maske. Nende kihtide ja maskide õige seadistamine võimaldab teil kontrollida, millised objektid võivad liikumise ajal üksteisega suhelda. Näiteks võite soovida, et mängija põrkaks kokku tahkete objektidega, kuid ei läbiks mittetahkeid objekte.
Lisage visuaalset ja helilist tagasisidet
Rakendage visuaalseid efekte ja helisignaale, et anda mängijatele liikumise ajal tagasisidet. Näiteks tolmuosakeste lisamine, kui mängija jookseb või astub heli, võib süvenemise ja kaasamise tunnet parandada.
Muutke Godoti mängud mängijate liikumisega kaasahaaravamaks
Vedel ja tundlik liikumismehaanika võib oluliselt parandada üldist mängija kogemust. Olgu selleks siis tohutu maailma uurimine, vaenlaste eest põgenemine või mõistatuste lahendamine, sujuv mängija liikumine suurendab keelekümblust ja hoiab mängijad konksu peal.
Rakendades mängija liikumist GDScripti ja sõlme CharacterBody2D abil, saate luua dünaamilisi ja nauditavaid mängukogemusi. Võimalus vabalt liikuda ja mängumaailmaga suhelda annab mängijatele jõudu ja paneb nad tundma end virtuaalse keskkonnaga seotuna.