Menu
CoddyTech

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. Wygląda to sztywno.

move_toward(from, to, step) przesuwa liczbę from w kierunku to o wartość nie większą niż step, nigdy jej nie przekraczając. move_toward(0, 220, 15) daje 15. Powtarzane w każdej klatce daje 30, 45 i tak dalej aż do 220.

Użyj tej funkcji dla velocity.x, kierując ją ku prędkości, o którą proszą klawisze:

var direction = Input.get_axis("move_left", "move_right")
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)

acceleration to prędkość zyskiwana na sekundę, więc jest mnożona przez delta. Przy wartości 900 bohater osiąga 220 w około ćwierć sekundy. Gdy żaden klawisz nie jest wciśnięty, wartością docelową jest 0, więc bohater zwalnia aż do zatrzymania.

challenge icon

Wyzwanie

Średni

Spraw, aby bohater płynnie przyspieszał i zwalniał. Ustawiaj velocity.x za pomocą move_toward, w kierunku direction * speed, o wartość acceleration * delta w każdej klatce.

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()
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Wejście i ruch

Poćwicz samodzielnie: Edytor online Godot