Движението на играча играе решаваща роля за по-ангажиращите игри на Godot. Научете как да го приложите.

Прилагането на движение на играча е основен аспект на създаването на завладяващи игри в Godot Game Engine. Движението на играча позволява на потребителите да контролират герои, да изследват игрови светове и да взаимодействат с различни елементи в игровата среда.

Настройване на играта Godot

За да започнете, създайте нов 2D проект в играта Godot Engine. След това следвайте тези стъпки, за да добавите движение на играча към вашата игра

Създайте нова сцена, като щракнете с десния бутон върху Файлова система панел, след което изберете Нова папка и го именува Сцени. Вътре в Сцени папка, щракнете с десния бутон и създайте нова 2D сцена. Запазете го с подходящо име, напр. Player.tscn.

Кодът, използван в тази статия, е достъпен в това GitHub хранилище и е безплатен за използване под лиценза на MIT.

Добави CharacterBody2D възел към сцената, като щракнете върху Добавете възел бутон и избиране CharacterBody2D от библиотеката на възлите.

instagram viewer

С CharacterBody2D избран възел, щракнете върху Добавете дъщерен възел бутон за добавяне на a CollisionShape2D. Коригирайте формата на CollisionShape2D за да съответства на размерите на играча. Можете да използвате правоъгълна форма за простота.

След това добавете a Sprite2D компонент към CharacterBody2D възел и изберете подходящ спрайт за вашия герой на играча.

Добавяне на движение на играч с помощта на въвеждане от клавиатурата

Сега можете да добавите движение на играча, като използвате въвеждане от клавиатурата към Player.gd сценарий.

Разширете CharacterBody2D възел, задайте скоростта на движение и вземете входните данни от клавишите със стрелки (ui_left, ui_right, ui_up, ui_down). Изчислете скоростта на движение въз основа на посоката на въвеждане, нормализирайте я и след това преместете играча с помощта на движение_и_сблъскване функция в _физичен_процес метод.

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)

Добавяне на ротация

За да накарате играча да гледа в посоката на движение, можете да добавите ротация към вашия играч. Актуализирайте Player.gd скрипт, както следва:

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

Играчът ще се върти в посоката на движение. Скоростта на въртене може да се регулира с помощта на скорост на въртене променлива.

Добавяне на движение на играч с помощта на въвеждане с мишката

Сега можете да приложите движение на играча с помощта на въвеждане с мишката, за да преместите играча до позицията на щракване с мишката или да накарате играча да се изправи срещу показалеца на мишката:

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)

В този код играчът ще се придвижи към позицията на щракване на мишката всеки път, когато щракнете действието се задейства. Скоростта на играча може да се контролира с помощта на скорост променлива.

Освен това можете също да приложите ротация, базирана на мишката, както следва:

extends CharacterBody2D

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

В тази версия спрайтът на играча ще бъде обърнат директно към позицията на показалеца на мишката.

Включително допълнителни функции

Докато основното движение на играча е от съществено значение за повечето игри, добавянето на допълнителни функции може да изведе изживяването на вашия играч на следващото ниво. Ето някои вълнуващи функции, които можете да обмислите да внедрите в играта си, за да подобрите движението на играча:

скачане

Внедряване на механика за скачане позволява на играчите да преминават през препятствия, да достигат до по-високи платформи и да добавят допълнителен слой интерактивност към света на играта. Можете да контролирате височината на скока и да добавяте анимации, за да го направите визуално привлекателен.

Тире или спринт

Способността за удар позволява на играча да се движи бързо за кратък изстрел, което може да бъде полезно за избягване на врагове или пресичане на трудни зони. Тази функция добавя динамичен елемент към играта и подобрява чувството за контрол на играча.

Плъзгане и катерене по стена

Въвеждането на механика за плъзгане и катерене по стените позволява на играчите да взаимодействат с вертикални повърхности. Играчите могат да се плъзгат надолу по стени, да извършват скокове по стени или дори да прескачат определени препятствия. Тази функция е особено популярна в платформинг игрите.

Механика на платформинга

За платформър игри, можете да включите гравитация, ускорение и забавяне, за да създадете плавно и реалистично движение. Фината настройка на тези механики може да направи играта по-полирана и приятна.

Не забравяйте, че ключът към успешното внедряване на допълнителни функции се крие в балансирането и безпроблемното им интегриране в играта. Всяка функция трябва да допълва основната механика на движение на играча и да допринася за цялостното игрово изживяване.

Най-добри практики за добавяне на движение на играча

Когато става въпрос за внедряване на движение на играча във вашата игра Godot, следвайте тези най-добри практики не само ще направи вашия код по-чист и по-ефективен, но и ще допринесе за по-добър играч опит:

Отделни грижи

Организирайте логиката на движението на вашия играч в отделни функции или скриптове. Например, създайте скрипт за обработка на въвеждане от играча, друг за движение на герои и евентуално още един за обработка на анимации.

Разделянето на проблемите прави вашия код по-модулен и по-лесен за поддръжка, както и насърчава по-доброто сътрудничество между членовете на екипа.

Използвайте Delta Time

Когато изчислявате движението, винаги умножавайте стойностите си по делта времето (делта), за да осигурите плавно движение при различни кадрови честоти. Делта времето представлява времето, изминало от последния кадър и гарантира, че играчът се движи с постоянна скорост, независимо от производителността на устройството.

Ограничете скоростта на движение

Задайте максимални скорости на движение за вашия плейър, за да избегнете непреднамерено движение с висока скорост. Това ограничение може да бъде полезно за предотвратяване на играчите да нарушават физиката на играта или да срещат проблеми с откриването на сблъсък.

Помислете за физически слоеве и маски за сблъсък

Godot ви позволява да конфигурирате слоеве и маски за сблъсък за различни обекти във вашата игра. Правилната настройка на тези слоеве и маски ви позволява да контролирате кои обекти могат да взаимодействат един с друг по време на движение. Например, може да искате играчът да се сблъсква с твърди обекти, но да не преминава през нетвърди.

Добавете визуална и аудио обратна връзка

Внедрете визуални ефекти и звукови знаци, за да предоставите обратна връзка на играчите по време на движение. Например, добавянето на частици прах, когато играчът тича или звукът на стъпките може да подобри усещането за потапяне и ангажираност.

Правене на Godot Games по-ангажиращи с движението на играча

Плавната и отзивчива механика на движение може значително да подобри цялостното изживяване на играча. Независимо дали става въпрос за изследване на огромен свят, избягване на врагове или решаване на пъзели, плавното движение на играча подобрява потапянето и държи играчите приковани.

Като внедрите движение на играча с помощта на GDScript и възела CharacterBody2D, можете да създадете динамични и приятни изживявания при игра. Способността да се движат свободно и да взаимодействат със света на играта дава възможност на играчите и ги кара да се чувстват свързани с виртуалната среда.