Menu
CoddyTech

Tarcie

Część sekcji Wejście i ruch ścieżki Godot w Coddy. Lekcja 19 z 28.

Większość postaci w grach zatrzymuje się szybciej, niż rusza. Spowalnianie, gdy żaden klawisz nie jest wciśnięty, to tarcie.

Aby użyć innej wartości do zatrzymywania, kod potrzebuje dwóch ścieżek. else daje instrukcji if drugą ścieżkę, a wykonywana jest dokładnie jedna z nich:

if direction == 0:
	velocity.x = move_toward(velocity.x, 0, friction * delta)
else:
	velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)

== sprawdza, czy dwie wartości są równe. Pojedynczy znak = przypisuje wartość zmiennej. direction == 0 jest prawdziwe, gdy żaden klawisz nie jest wciśnięty.

Małe friction, na przykład 300, powoduje ślizganie się jak po lodzie. Duża wartość, na przykład 2400, zatrzymuje w kilka klatek.

challenge icon

Wyzwanie

Średni

Spraw, by bohater szybko się zatrzymywał. Gdy żaden klawisz nie jest wciśnięty, zmniejszaj velocity.x do 0 o friction * delta na każdą klatkę. Gdy klawisz jest wciśnięty, nadal zwiększaj prędkość, używając acceleration.

Spróbuj swoich sił

extends CharacterBody2D

var speed = 220
var acceleration = 900
var friction = 2400
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
	var direction = Input.get_axis("move_left", "move_right")
	velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)
	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