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.
Wyzwanie
ŚredniSpraw, 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()
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