Stopniowe przyspieszanie
Część sekcji Wejście i ruch ścieżki Godot w Coddy. Lekcja 18 z 28.
Bohater osiąga pełną prędkość w jednej klatce i zatrzymuje się w jednej klatce. To sprawia wrażenie sztywnego ruchu.
move_toward(from, to, step) przesuwa liczbę from w kierunku to o wartość nie większą niż step, nie przekraczając jej. move_toward(0, 220, 15) daje 15. Powtarzana w każdej klatce, daje 30, 45 i tak dalej, aż do 220.
Użyj jej dla velocity.x, kierując się prędkością, o jaką proszą klawisze:
var direction = Input.get_axis("move_left", "move_right")
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)acceleration to przyrost prędkości na sekundę, więc mnoży się ją przez delta. Przy wartości 900 bohater osiąga 220 w około ćwierć sekundy. Gdy żaden klawisz nie jest wciśnięty, celem jest 0, więc bohater zwalnia i się zatrzymuje.
Wyzwanie
ŚredniSpraw, by bohater płynnie przyspieszał i zwalniał.
- Zapisz
Input.get_axis("move_left", "move_right")wvar direction. - Ustaw
velocity.xza pomocąmove_toward(velocity.x, direction * speed, acceleration * delta).
Naciśnij „Graj” i przytrzymaj strzałkę: bohater rozpędzi się do 220, a po puszczeniu jej zwolni. Następnie naciśnij „Sprawdź”.
Spróbuj swoich sił
extends CharacterBody2D
var speed = 220
var acceleration = 900
var gravity = 1000
var jump_velocity = -500
func _physics_process(delta):
velocity.y += gravity * delta
if Input.is_action_just_pressed("jump") and is_on_floor():
velocity.y = jump_velocity
velocity.x = Input.get_axis("move_left", "move_right") * speed
move_and_slide()
Wszystkie lekcje w sekcji Wejście i ruch
1Akcje wejścia
Naciśnij, aby się poruszyćW lewo i w prawoJedna ośCztery kierunkiWłaśnie naciśniętoNieobsłużone wejście4Płynny ruch
Stopniowe przyspieszanieTarciePatrz w kierunku ruchuOgraniczenie do ekranuOgraniczenie obu osiPoćwicz samodzielnie: Edytor online Godot