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

instagram viewer
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.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()

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.