Controlul Mișcării 2D cu CharacterBody2D: velocity, move_and_slide() și Gravitație în GDScript (Godot Engine)

Ghid complet pentru fizica personajelor în Godot 4: utilizarea nodului CharacterBody2D, vectorul integrat velocity, aplicarea gravitației și metoda nativă move_and_slide().

Sintaxă
velocity.x = directie * VITEZA; move_and_slide()

Î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()
Comunitate & Schimb de cunoștințe

Întrebări & Exemple de Cod: Controlul Mișcării 2D cu CharacterBody2D: velocity, move_and_slide() și Gravitație

Ai o nelămurire despre utilizarea comenzii Controlul Mișcării 2D cu CharacterBody2D: velocity, move_and_slide() și Gravitație sau 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.

Comunitate Adaugă o întrebare sau distribuie un cod

Moderare & Siguranță:

Pentru a menține calitatea și securitatea informațiilor, fiecare întrebare sau fragment de cod/prompt este analizat (manual sau prin moderare asistată de AI) înainte de publicare.