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
KinematicBody2Di 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 klawiszSpacedo 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 (
CollisionShape2DlubCollisionShape3D) 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ę. 😊





Dodaj komentarz