Pohyb hráče hraje zásadní roli v tom, aby hry Godot byly poutavější. Přečtěte si, jak jej implementovat.

Implementace pohybu hráče je základním aspektem vytváření poutavých her v Godot Game Engine. Pohyb hráčů umožňuje uživatelům ovládat postavy, prozkoumávat herní světy a interagovat s různými prvky v herním prostředí.

Nastavení hry Godot

Chcete-li začít, vytvořte nový 2D projekt v herní engine Godot. Poté postupujte podle těchto kroků a přidejte do hry pohyb hráče

Vytvořte novou scénu kliknutím pravým tlačítkem na Souborový systém panelu a poté vyberte Nová složka a pojmenovat to Scény. Uvnitř Scény klikněte pravým tlačítkem a vytvořte novou 2D scénu. Uložte jej pod vhodným názvem, např. Player.tscn.

Kód použitý v tomto článku je k dispozici v tomto úložiště GitHub a můžete jej používat zdarma pod licencí MIT.

Přidat CharacterBody2D uzel do scény kliknutím na Přidat uzel tlačítko a výběr CharacterBody2D z knihovny uzlů.

s CharacterBody2D vybraný uzel, klepněte na Přidat podřízený uzel tlačítko pro přidání a

CollisionShape2D. Upravte tvar CollisionShape2D aby odpovídala rozměrům přehrávače. Pro jednoduchost můžete použít tvar obdélníku.

Dále přidejte a Sprite2D součást k CharacterBody2D uzel a vyberte si vhodného sprite pro vaši hráčskou postavu.

Přidání pohybu hráče pomocí vstupu z klávesnice

Nyní můžete přidat pohyb hráče pomocí vstupu z klávesnice Player.gd skript.

Prodlužte CharacterBody2D node, nastavte rychlost pohybu a získejte vstup z kláves se šipkami (ui_left, ui_right, ui_up, ui_down). Vypočítejte rychlost pohybu na základě vstupního směru, normalizujte ji a poté přesuňte přehrávač pomocí tlačítka move_and_collide funkce v _fyzikální_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)

Přidání rotace

Chcete-li, aby se hráč díval ve směru pohybu, můžete do přehrávače přidat rotaci. Aktualizujte Player.gd skript takto:

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

Hráč se bude otáčet ve směru pohybu. Rychlost otáčení lze upravit pomocí rychlost otáčení variabilní.

Přidání pohybu hráče pomocí myši

Nyní můžete implementovat pohyb hráče pomocí vstupu myši a přesunout hráče do pozice, na kterou kliknete myší, nebo přimět hráče, aby se díval na ukazatel myši:

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)

V tomto kódu se hráč přesune směrem k pozici kliknutí myší, kdykoli se objeví klikněte je spuštěna akce. Rychlost přehrávače lze ovládat pomocí Rychlost variabilní.

Kromě toho můžete také implementovat otáčení podle myši následovně:

extends CharacterBody2D

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

V této verzi bude sprite hráče přímo směřovat k pozici ukazatele myši.

Včetně dalších funkcí

Zatímco základní pohyb hráče je nezbytný pro většinu her, přidání dalších funkcí může posunout zážitek vašeho hráče na další úroveň. Zde je několik zajímavých funkcí, které můžete zvážit implementaci do své hry, abyste zlepšili pohyb hráče:

Skákání

Implementace mechaniky skákání umožňuje hráčům procházet překážkami, dostat se na vyšší platformy a přidat do herního světa další vrstvu interaktivity. Můžete ovládat výšku skoku a přidávat animace, aby byl vizuálně přitažlivý.

Dash nebo Sprint

Schopnost pomlčky umožňuje hráči rychlý pohyb na krátkou dávku, což může být užitečné při vyhýbání se nepřátelům nebo procházení náročných oblastí. Tato funkce přidává do hry dynamický prvek a zlepšuje hráčský pocit kontroly.

Posouvání a lezení po stěnách

Představení mechaniky posouvání a šplhání po stěnách umožňuje hráčům interakci s vertikálními povrchy. Hráči mohou klouzat po stěnách, provádět skoky po stěnách nebo dokonce překonávat určité překážky. Tato funkce je oblíbená zejména u plošinovkových her.

Mechanika plošinovky

Pro plošinovky, můžete začlenit gravitaci, zrychlení a zpomalení a vytvořit tak plynulý a realistický pohyb. Jemné vyladění těchto mechanik může způsobit, že hra bude vypadat uhlazenější a zábavnější.

Pamatujte, že klíč k úspěšné implementaci dalších funkcí spočívá v jejich vyvážení a bezproblémové integraci do hry. Každá funkce by měla doplňovat základní mechaniku pohybu hráče a přispívat k celkovému hernímu zážitku.

Nejlepší postupy pro přidání pohybu hráče

Pokud jde o implementaci pohybu hráče ve vaší hře Godot, postupujte podle těchto osvědčených postupů nejen že váš kód bude čistší a efektivnější, ale také přispěje k lepšímu přehrávači Zkušenosti:

Samostatné obavy

Uspořádejte si logiku pohybu hráče do samostatných funkcí nebo skriptů. Vytvořte například skript pro manipulaci se vstupy hráče, další pro pohyb postavy a možná ještě jeden pro manipulaci s animacemi.

Oddělením problémů je váš kód modulárnější a snáze se udržuje a také podporuje lepší spolupráci mezi členy týmu.

Použijte Delta Time

Při výpočtu pohybu vždy vynásobte své hodnoty delta časem (delta), abyste zajistili hladký pohyb napříč různými snímkovými frekvencemi. Delta time představuje čas uplynulý od posledního snímku a zajišťuje, že se hráč pohybuje konzistentní rychlostí bez ohledu na výkon zařízení.

Omezit rychlost pohybu

Nastavte maximální rychlost pohybu svého hráče, abyste se vyhnuli nechtěnému pohybu vysokou rychlostí. Toto omezení může být užitečné při zabránění hráčům v narušení herní fyziky nebo při problémech s detekcí kolize.

Zvažte fyzikální vrstvy a kolizní masky

Godot vám umožňuje konfigurovat kolizní vrstvy a masky pro různé objekty ve vaší hře. Správné nastavení těchto vrstev a masek vám umožní řídit, které objekty spolu mohou během pohybu interagovat. Můžete například chtít, aby se hráč srazil s pevnými předměty, ale neprošel těmi nepevnými.

Přidejte vizuální a zvukovou zpětnou vazbu

Implementujte vizuální efekty a zvukové podněty pro poskytnutí zpětné vazby hráčům během pohybu. Například přidání prachových částic, když hráč běží nebo zvuk kroků, může zlepšit pocit ponoření a zapojení.

Díky pohybu hráče budou hry Godot poutavější

Fluidní a citlivá mechanika pohybu může výrazně zlepšit celkový zážitek z hráče. Ať už se jedná o prozkoumávání rozlehlého světa, uhýbání před nepřáteli nebo řešení hádanek, plynulý pohyb hráče zvyšuje ponoření a udržuje hráče v kontaktu.

Implementací pohybu hráče pomocí GDScript a uzlu CharacterBody2D můžete vytvářet dynamické a příjemné herní zážitky. Schopnost volně se pohybovat a interagovat s herním světem posiluje hráče a dává jim pocit propojení s virtuálním prostředím.