Žaidėjų judėjimas atlieka lemiamą vaidmenį, kad Godot žaidimai būtų patrauklesni. Sužinokite, kaip tai įgyvendinti.

Žaidėjų judėjimo įgyvendinimas yra pagrindinis aspektas kuriant patrauklius žaidimus „Godot Game Engine“. Žaidėjo judėjimas leidžia vartotojams valdyti personažus, tyrinėti žaidimų pasaulius ir sąveikauti su įvairiais žaidimo aplinkos elementais.

„Godot“ žaidimo nustatymas

Norėdami pradėti, sukurkite naują 2D projektą Godot žaidimų variklis. Tada atlikite šiuos veiksmus, kad pridėtumėte žaidėjo judėjimą į žaidimą

Sukurkite naują sceną dešiniuoju pelės mygtuku spustelėdami Failų sistema skydelį, tada pasirinkite Naujas aplankas ir įvardijant Scenos. Viduje Scenos aplanką, dešiniuoju pelės mygtuku spustelėkite ir sukurkite naują 2D sceną. Išsaugokite jį tinkamu pavadinimu, pvz., Player.tscn.

Šiame straipsnyje naudojamas kodas pateikiamas čia GitHub saugykla ir jūs galite nemokamai naudotis pagal MIT licenciją.

Pridėti CharacterBody2D mazgas į sceną spustelėdami Pridėti mazgą mygtuką ir pasirenkant CharacterBody2D iš mazgų bibliotekos.

instagram viewer

Su CharacterBody2D pasirinktas mazgas, spustelėkite Pridėti antrinį mazgą mygtuką, kad pridėtumėte a CollisionShape2D. Sureguliuokite formą CollisionShape2D kad atitiktų žaidėjo matmenis. Dėl paprastumo galite naudoti stačiakampio formą.

Toliau pridėkite a Sprite2D komponentas prie CharacterBody2D mazgą ir pasirinkite savo žaidėjo personažui tinkamą sprite.

Grotuvo judesio pridėjimas naudojant klaviatūros įvestį

Dabar galite pridėti žaidėjo judėjimą naudodami klaviatūros įvestį Žaidėjas.gd scenarijus.

Išplėskite CharacterBody2D mazgas, nustatykite judėjimo greitį ir gaukite įvestį rodyklių klavišais (ui_left, ui_right, ui_up, ui_down). Apskaičiuokite judėjimo greitį pagal įvesties kryptį, normalizuokite jį ir perkelkite grotuvą naudodami judėti_ir_susidurti funkcija _fizikos_procesas metodas.

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)

Rotacijos pridėjimas

Norėdami, kad grotuvas būtų nukreiptas į judėjimo kryptį, grotuvą galite pasukti. Atnaujinkite Žaidėjas.gd scenarijus taip:

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

Žaidėjas suksis judėjimo kryptimi. Sukimosi greitį galima reguliuoti naudojant sukimosi greitis kintamasis.

Grotuvo judesio pridėjimas naudojant pelės įvestį

Dabar galite atlikti žaidėjo judėjimą naudodami pelės įvestį, kad perkeltumėte žaidėją į pelės spustelėjimo vietą arba nukreiptumėte žaidėją į pelės žymeklį:

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)

Šiame kode žaidėjas judės link pelės paspaudimo padėties, kai tik spustelėkite suaktyvinamas veiksmas. Žaidėjo greitį galima valdyti naudojant greitis kintamasis.

Be to, taip pat galite pritaikyti pelės pasukimą taip:

extends CharacterBody2D

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

Šioje versijoje žaidėjo spraitas bus tiesiogiai nukreiptas į pelės žymeklio padėtį.

Įskaitant papildomas funkcijas

Nors pagrindinis žaidėjo judėjimas yra būtinas daugeliui žaidimų, pridėjus papildomų funkcijų žaidėjo patirtis gali pakilti į kitą lygį. Štai keletas įdomių funkcijų, kurias galite apsvarstyti savo žaidime, kad pagerintumėte žaidėjo judėjimą:

Šokinėja

Šuolių mechanikos įgyvendinimas leidžia žaidėjams naršyti per kliūtis, pasiekti aukštesnes platformas ir pridėti papildomo interaktyvumo žaidimo pasauliui. Galite valdyti šuolio aukštį ir pridėti animacijų, kad jis būtų vizualiai patrauklus.

Dash arba Sprint

Brūkšnelių galimybė leidžia žaidėjui greitai judėti trumpam sprogimui, o tai gali būti naudinga norint išvengti priešų ar kertant sudėtingas sritis. Ši funkcija suteikia žaidimo dinamiškumo ir pagerina žaidėjo valdymo jausmą.

Sienų slydimas ir laipiojimas

Sienų slydimo ir laipiojimo mechanika suteikia žaidėjams galimybę sąveikauti su vertikaliais paviršiais. Žaidėjai gali slysti žemyn sienomis, atlikti šuolius nuo sienos ar net įveikti tam tikras kliūtis. Ši funkcija ypač populiari platformingo žaidimuose.

Platformos mechanika

Platformer žaidimams, galite įtraukti gravitaciją, pagreitį ir lėtėjimą, kad sukurtumėte sklandų ir tikrovišką judėjimo patirtį. Tiksliai sureguliavus šią mechaniką, žaidimas gali jaustis labiau nušlifuotas ir malonesnis.

Atminkite, kad raktas į sėkmingą papildomų funkcijų įdiegimą yra jų subalansavimas ir sklandus integravimas į žaidimą. Kiekviena funkcija turėtų papildyti pagrindinę žaidėjo judėjimo mechaniką ir prisidėti prie bendros žaidimo patirties.

Geriausia žaidėjo judesių įtraukimo praktika

Kalbant apie žaidėjo judėjimo įgyvendinimą Godot žaidime, vadovaukitės šia geriausia praktika ne tik padarys jūsų kodą švaresnį ir efektyvesnį, bet ir prisidės prie geresnio grotuvo patirtis:

Atskiri rūpesčiai

Sutvarkykite savo žaidėjo judėjimo logiką į atskiras funkcijas arba scenarijus. Pavyzdžiui, sukurkite scenarijų, skirtą žaidėjo įvestims tvarkyti, kitą – veikėjų judėjimui ir galbūt dar vieną – animacijai tvarkyti.

Atskirdami problemas, jūsų kodas tampa moduliškesnis ir lengviau prižiūrimas, taip pat skatinamas geresnis komandos narių bendradarbiavimas.

Naudokite Delta laiką

Skaičiuodami judėjimą, visada padauginkite savo vertes iš delta laiko (delta), kad užtikrintumėte sklandų judėjimą skirtingais kadrų dažniais. Delta laikas reiškia laiką, praėjusį nuo paskutinio kadro, ir užtikrina, kad grotuvas judėtų pastoviu greičiu, neatsižvelgiant į įrenginio veikimą.

Apriboti judėjimo greitį

Nustatykite didžiausią grotuvo judėjimo greitį, kad išvengtumėte netyčinio didelio greičio judėjimo. Šis apribojimas gali būti naudingas siekiant neleisti žaidėjams pažeisti žaidimo fizikos ar susidurti su susidūrimų aptikimo problemomis.

Apsvarstykite fizikos sluoksnius ir susidūrimo kaukes

„Godot“ leidžia konfigūruoti susidūrimo sluoksnius ir kaukes skirtingiems žaidimo objektams. Tinkamai nustatę šiuos sluoksnius ir kaukes galite valdyti, kurie objektai gali sąveikauti vienas su kitu judėjimo metu. Pavyzdžiui, galite norėti, kad žaidėjas susidurtų su kietais objektais, bet nepraeitų pro nekietus.

Pridėkite vaizdo ir garso atsiliepimų

Įdiekite vaizdinius efektus ir garso signalus, kad žaidėjams judant suteiktumėte grįžtamąjį ryšį. Pavyzdžiui, pridedant dulkių dalelių, kai grotuvas bėga arba žengia žingsnių garsą, gali sustiprinti panardinimo ir įsitraukimo jausmą.

Kad „Godot“ žaidimai būtų patrauklesni žaidėjų judėjimui

Skysti ir reaguojanti judesių mechanika gali žymiai pagerinti bendrą žaidėjo patirtį. Nesvarbu, ar tai būtų didžiulio pasaulio tyrinėjimas, priešų vengimas ar galvosūkių sprendimas, sklandus žaidėjo judėjimas sustiprina panirimą ir išlaiko žaidėjus.

Įdiegę žaidėjo judėjimą naudodami GDScript ir CharacterBody2D mazgą, galite sukurti dinamišką ir malonią žaidimo patirtį. Galimybė laisvai judėti ir bendrauti su žaidimų pasauliu įgalina žaidėjus ir leidžia jiems jausti ryšį su virtualia aplinka.