Kretanje igrača igra ključnu ulogu u tome da Godot igre budu privlačnije. Naučite kako to implementirati.

Implementacija kretanja igrača temeljni je aspekt stvaranja zanimljivih igara u Godot Game Engineu. Kretanje igrača omogućuje korisnicima kontrolu likova, istraživanje svjetova igre i interakciju s različitim elementima u okruženju igre.

Postavljanje igre Godot

Za početak izradite novi 2D projekt u Godot Game Engine. Zatim slijedite ove korake da svojoj igri dodate kretanje igrača

Stvorite novu scenu desnim klikom na Sustav datoteka ploča, a zatim odabirom Nova mapa i imenovanje Scene. Unutar Scene mapu, desnom tipkom miša kliknite i stvorite novu 2D scenu. Spremite ga pod odgovarajućim imenom, npr. Igrač.tscn.

Kôd korišten u ovom članku dostupan je u ovom GitHub spremište i besplatan je za korištenje pod MIT licencom.

Dodati CharacterBody2D čvor na scenu klikom na Dodaj čvor gumb i odabirom CharacterBody2D iz knjižnice čvorova.

s CharacterBody2D odabran čvor, kliknite na Dodaj podređeni čvor

gumb za dodavanje a CollisionShape2D. Podesite oblik CollisionShape2D da odgovara dimenzijama igrača. Za jednostavnost možete koristiti oblik pravokutnika.

Zatim dodajte a Sprite2D komponenta za CharacterBody2D čvor i odaberite odgovarajući sprite za svog lika igrača.

Dodavanje pokreta igrača pomoću unosa s tipkovnice

Sada možete dodati kretanje igrača pomoću unosa s tipkovnice Igrač.gd skripta.

Proširite CharacterBody2D čvor, postavite brzinu kretanja i primite unos pomoću tipki sa strelicama (ui_left, ui_right, ui_up, ui_down). Izračunajte brzinu kretanja na temelju ulaznog smjera, normalizirajte je, a zatim pomaknite igrača pomoću kretati_i_sudarati funkcija u _fizički_proces metoda.

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)

Dodavanje rotacije

Kako bi igrač bio okrenut u smjeru kretanja, možete dodati rotaciju svom igraču. Ažurirajte Igrač.gd skripta na sljedeći način:

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()

Igrač će se okretati u smjeru kretanja. Brzina rotacije može se podesiti pomoću brzina_rotacije varijabla.

Dodavanje pokreta igrača pomoću unosa mišem

Sada možete implementirati kretanje igrača korištenjem unosa mišem da pomaknete igrača na poziciju klika mišem ili da igrač bude okrenut prema pokazivaču miša:

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)

U ovom kodu, igrač će se pomaknuti prema poziciji klika mišem kad god klik radnja je pokrenuta. Brzina igrača može se kontrolirati pomoću ubrzati varijabla.

Osim toga, također možete implementirati rotaciju temeljenu na mišu na sljedeći način:

extends CharacterBody2D

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

U ovoj verziji, igračev sprite će biti izravno okrenut prema poziciji pokazivača miša.

Uključujući dodatne značajke

Dok je osnovno kretanje igrača bitno za većinu igara, dodavanje dodatnih značajki može podići iskustvo vašeg igrača na višu razinu. Evo nekoliko uzbudljivih značajki koje možete razmisliti o implementaciji u svoju igru ​​kako biste poboljšali kretanje igrača:

Skakanje

Implementacija mehanike skakanja omogućuje igračima da se kreću kroz prepreke, dosegnu više platforme i dodaju dodatni sloj interaktivnosti u svijet igre. Možete kontrolirati visinu skoka i dodati animacije kako biste ga učinili vizualno privlačnim.

Trčanje ili sprint

Sposobnost trzaja omogućuje igraču brzo kretanje u kratkom nizu, što može biti korisno za izbjegavanje neprijatelja ili prelazak izazovnih područja. Ova značajka dodaje dinamičan element igranju i povećava igračev osjećaj kontrole.

Klizanje i penjanje po zidu

Uvođenje mehanike klizanja i penjanja po zidu omogućuje igračima interakciju s okomitim površinama. Igrači mogu kliziti niz zidove, izvoditi zidne skokove ili čak prelaziti određene prepreke. Ova je značajka posebno popularna u platformskim igrama.

Mehanika platformera

Za platformske igre, možete uključiti gravitaciju, ubrzanje i usporavanje kako biste stvorili glatko i realistično iskustvo kretanja. Fino podešavanje ovih mehanika može učiniti igru ​​uglađenijom i ugodnijom.

Upamtite, ključ uspješne implementacije dodatnih značajki leži u njihovoj ravnoteži i neprimjetnoj integraciji u igru. Svaka značajka trebala bi nadopuniti mehaniku kretanja osnovnog igrača i pridonijeti cjelokupnom iskustvu igre.

Najbolji primjeri iz prakse za dodavanje kretanja igrača

Kada je riječ o implementaciji kretanja igrača u igri Godot, slijedite ove najbolje prakse ne samo da će vaš kod učiniti čišćim i učinkovitijim, već će također doprinijeti boljem igraču iskustvo:

Odvojene brige

Organizirajte svoju logiku kretanja igrača u zasebne funkcije ili skripte. Na primjer, izradite skriptu za rukovanje unosom igrača, drugu za kretanje likova i možda još jednu za rukovanje animacijama.

Odvajanje problema čini vaš kod modularnijim i lakšim za održavanje, kao i promiče bolju suradnju među članovima tima.

Koristite Delta vrijeme

Kada izračunavate kretanje, uvijek pomnožite svoje vrijednosti s delta vremenom (delta) kako biste osigurali glatko kretanje kroz različite brzine kadrova. Delta vrijeme predstavlja vrijeme proteklo od posljednjeg okvira i osigurava da se igrač kreće dosljednom brzinom, bez obzira na performanse uređaja.

Ograničite brzinu kretanja

Postavite maksimalnu brzinu kretanja za svog igrača kako biste izbjegli nenamjerno kretanje velikom brzinom. Ovo ograničenje može biti korisno u sprječavanju igrača da poremete fiziku igre ili naiđu na probleme s otkrivanjem sudara.

Razmotrite slojeve fizike i maske sudara

Godot vam omogućuje da konfigurirate slojeve sudara i maske za različite objekte u igri. Ispravno postavljanje ovih slojeva i maski omogućuje vam kontrolu koji objekti mogu međusobno komunicirati tijekom kretanja. Na primjer, možda želite da se igrač sudari s čvrstim objektima, ali ne prolazi kroz one koji nisu čvrsti.

Dodajte vizualne i audio povratne informacije

Implementirajte vizualne efekte i zvučne signale za pružanje povratnih informacija igračima tijekom kretanja. Na primjer, dodavanje čestica prašine kada igrač trči ili zvuk koraka može poboljšati osjećaj uronjenosti i angažmana.

Učiniti Godot igre privlačnijim pokretima igrača

Fluidna i osjetljiva mehanika pokreta može značajno poboljšati cjelokupno iskustvo igrača. Bilo da se radi o istraživanju golemog svijeta, izbjegavanju neprijatelja ili rješavanju zagonetki, glatko kretanje igrača poboljšava uranjanje i drži igrače privučenima.

Implementacijom kretanja igrača pomoću GDScripta i čvora CharacterBody2D, možete stvoriti dinamična i ugodna iskustva igranja. Sposobnost slobodnog kretanja i interakcije sa svijetom igre osnažuje igrače i čini ih povezanima s virtualnim okruženjem.