Menu
CoddyTech

Reibung

Teil des Abschnitts Eingabe und Bewegung der Godot-Journey von Coddy. Lektion 19 von 28.

Die meisten Spielfiguren kommen langsamer zum Stillstand, als sie in Bewegung geraten. Das Abbremsen, wenn keine Taste gedrückt wird, nennt man Reibung.

Um zum Anhalten eine andere Zahl zu verwenden, braucht der Code zwei Pfade. else gibt einem if einen zweiten Pfad, und genau einer der beiden wird ausgeführt:

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

== prüft, ob zwei Werte gleich sind. Ein = weist einer Variable einen Wert zu. direction == 0 ist wahr, wenn keine Taste gedrückt wird.

Eine kleine friction, etwa 300, lässt die Figur wie auf Eis rutschen. Eine große, etwa 2400, bringt sie innerhalb weniger Frames zum Stillstand.

challenge icon

Aufgabe

Mittel

Lass den Helden schnell anhalten, wenn du loslässt.

  1. Setze die Zeile move_toward unter else:.
  2. Verlangsame darüber, unter if direction == 0:, velocity.x mit friction * delta durch move_toward auf 0.

Drücke „Spielen“, laufe und lass los: Der Held rutscht ein wenig und bleibt dann stehen. Drücke anschließend „Prüfen“.

Probier es selbst

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

Alle Lektionen in Eingabe und Bewegung

Übe selbstständig: Godot-Playground