În Godot 4, vechiul nod KinematicBody2D a fost înlocuit de CharacterBody2D. Acesta include o proprietate nativă integrată numită velocity (Vector2), iar metoda move_and_slide() nu mai cere argumente de viteză și nu mai cere multiplicarea cu delta, gestionând automat coliziunile, rampele și unghiurile podelei.
Controler clasic de platformer 2D cu săritură și gravitație
extends CharacterBody2D
const VITEZA_MERS = 300.0
const FORTA_SARITURA = -450.0
# Preluăm automat forța gravitației definită în setările proiectului:
var gravitatie: float = ProjectSettings.get_setting("physics/2d/default_gravity")
func _physics_process(delta: float) -> void:
# 1. Aplicăm gravitația dacă personajul se află în aer:
if not is_on_floor():
velocity.y += gravitatie * delta
# 2. Gestiunea săriturii (dacă apasă butonul și este pe sol):
if Input.is_action_just_pressed("ui_accept") and is_on_floor():
velocity.y = FORTA_SARITURA
# 3. Preluarea direcției orizontale din tastele stânga/dreapta (-1, 0 sau 1):
var directie := Input.get_axis("ui_left", "ui_right")
if directie != 0.0:
velocity.x = directie * VITEZA_MERS
else:
# Frânare lină prin interpolare (lerp):
velocity.x = move_toward(velocity.x, 0, VITEZA_MERS * 0.1)
# 4. Deplasare cu rezolvare automată a coliziunilor fizice:
move_and_slide()
Întrebări & Exemple de Cod:
Controlul Mișcării 2D cu CharacterBody2D: velocity, move_and_slide() și GravitațieAi o nelămurire despre utilizarea comenzii
Controlul Mișcării 2D cu CharacterBody2D: velocity, move_and_slide() și Gravitațiesau ai descoperit un truc / fragment de cod util? Distribuie-l cu ceilalți programatori!Fii primul care pune o întrebare sau distribuie un fragment de cod / prompt!
Nu au fost adăugate încă întrebări sau exemple de cod pentru această pagină. Dacă ai întâlnit o problemă sau ai un snippet util, adaugă-l mai jos pentru a-i ajuta pe ceilalți.