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ę i uruchamiana 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 = przypisuje wartość zmiennej. direction == 0 jest prawdą, gdy żaden klawisz nie jest wciśnięty.

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

challenge icon

Wyzwanie

Średni

Spraw, aby bohater szybko się zatrzymywał, gdy puścisz przycisk.

  1. Umieść linię move_toward pod else:.
  2. Nad nią, pod if direction == 0:, spowolnij velocity.x do 0 o friction * delta za pomocą move_toward.

Naciśnij „Graj”, biegnij i puść przycisk: bohater przesunie się trochę, a potem się zatrzyma. Następnie naciśnij „Sprawdź”.

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()

Wszystkie lekcje w sekcji Wejście i ruch

Poćwicz samodzielnie: Edytor online Godot