Poruszanie postacią to jedna z podstawowych mechanik w grach. W Godot Engine możesz to łatwo zaimplementować, korzystając z węzłów takich jak KinematicBody2D
(dla gier 2D) lub CharacterBody3D
(dla gier 3D). Poniżej znajdziesz szczegółowe instrukcje, jak dodać ruch postaci w obu przypadkach.
Ruch postaci w 2D
1. Przygotowanie sceny
- Dodaj węzeł
KinematicBody2D
:- Kliknij prawym przyciskiem myszy w drzewie sceny i wybierz „Dodaj węzeł”.
- Wpisz
KinematicBody2D
i dodaj go.
- Dodaj dziecko węzła:
Sprite2D
: Wyświetla grafikę postaci (np. bohatera).CollisionShape2D
: Definiuje obszar kolizji postaci.- Po dodaniu ustaw kształt kolizji (np. prostokąt).
2. Dodanie skryptu
Dodaj skrypt do węzła KinematicBody2D
. Kliknij prawym przyciskiem myszy na węzeł, wybierz „Dodaj Skrypt”, a następnie wklej poniższy kod:
extends KinematicBody2D
@export var speed = 200 # Prędkość poruszania się postaci
var velocity = Vector2.ZERO
func _physics_process(delta):
velocity = Vector2.ZERO # Zerowanie prędkości przed każdym ruchem
# Odczytywanie wejścia użytkownika
if Input.is_action_pressed("ui_right"):
velocity.x += 1
if Input.is_action_pressed("ui_left"):
velocity.x -= 1
if Input.is_action_pressed("ui_down"):
velocity.y += 1
if Input.is_action_pressed("ui_up"):
velocity.y -= 1
# Normalizacja kierunku i zastosowanie prędkości
velocity = velocity.normalized() * speed
move_and_slide(velocity)
3. Konfiguracja wejścia (Input)
- Przejdź do „Project Settings” > „Input Map”.
- Dodaj następujące akcje:
ui_right
(np. przypisz klawisz strzałki w prawo lubD
).ui_left
(np. strzałka w lewo lubA
).ui_up
(np. strzałka w górę lubW
).ui_down
(np. strzałka w dół lubS
).
Postać powinna teraz poruszać się zgodnie z wpisanymi klawiszami.
Ruch postaci w 3D
1. Przygotowanie sceny
- Dodaj węzeł
CharacterBody3D
:- Kliknij prawym przyciskiem myszy w drzewie sceny i dodaj węzeł
CharacterBody3D
.
- Kliknij prawym przyciskiem myszy w drzewie sceny i dodaj węzeł
- Dodaj dziecko węzła:
MeshInstance3D
: Wyświetla model 3D postaci (np. sześcian jako placeholder).CollisionShape3D
: Definiuje kształt kolizji postaci (np. kapsuła lub pudełko).
2. Dodanie skryptu
Dodaj skrypt do węzła CharacterBody3D
i wklej poniższy kod:
extends CharacterBody3D
@export var speed = 5.0 # Prędkość poruszania się postaci
@export var jump_velocity = 10.0 # Siła skoku
func _physics_process(delta):
# Poruszanie się w poziomie
var direction = Vector3.ZERO
if Input.is_action_pressed("ui_right"):
direction.x += 1
if Input.is_action_pressed("ui_left"):
direction.x -= 1
if Input.is_action_pressed("ui_down"):
direction.z += 1
if Input.is_action_pressed("ui_up"):
direction.z -= 1
# Normalizacja i zastosowanie prędkości
if direction != Vector3.ZERO:
direction = direction.normalized() * speed
velocity.x = direction.x
velocity.z = direction.z
# Grawitacja
if not is_on_floor():
velocity.y += get_gravity() * delta
# Skok
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = jump_velocity
# Zastosowanie ruchu
move_and_slide()
3. Konfiguracja wejścia (Input)
- Przejdź do „Project Settings” > „Input Map”.
- Dodaj akcje:
ui_right
,ui_left
,ui_up
,ui_down
(jak w przykładzie 2D).ui_accept
(np. przypisz klawiszSpace
do skoku).
Dodatkowe porady
- Dodanie animacji: Możesz dodać
AnimationPlayer
, aby postać miała animacje biegu czy skoku. - Śledzenie postaci przez kamerę:
- Dodaj węzeł
Camera2D
(dla 2D) lubCamera3D
(dla 3D) jako dziecko postaci, aby kamera podążała za nią.
- Dodaj węzeł
- Kolizje: Dopasuj kształt kolizji (
CollisionShape2D
lubCollisionShape3D
) do rozmiaru swojej postaci.
Teraz Twoja postać może poruszać się po scenie! Jeśli chcesz rozbudować mechanikę, np. dodać skok, sprint lub bardziej zaawansowaną fizykę, chętnie Ci pomogę. 😊