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. 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.

challenge icon

Wyzwanie

Średni

Spraw, by bohater płynnie przyspieszał i zwalniał.

  1. Zapisz Input.get_axis("move_left", "move_right") w var direction.
  2. Ustaw velocity.x za 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

Poćwicz samodzielnie: Edytor online Godot