Menu
CoddyTech

Reibung

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

Die meisten Spielfiguren bremsen schneller ab, als sie beschleunigen. Das Abbremsen, wenn keine Taste gedrückt wird, ist Reibung.

Um beim Anhalten einen anderen Wert zu verwenden, benötigt 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 einzelnes = weist einer Variable einen Wert zu. direction == 0 ist wahr, wenn keine Taste gedrückt wird.

Bei einer niedrigen friction, etwa 300, rutscht die Figur wie auf Eis. Bei einer hohen, etwa 2400, kommt sie innerhalb weniger Frames zum Stillstand.

challenge icon

Aufgabe

Mittel

Lass den Helden schnell anhalten. Wenn keine Taste gedrückt wird, verlangsame velocity.x pro Frame um friction * delta bis auf 0. Wenn eine Taste gedrückt wird, beschleunige weiter um acceleration.

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()
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Eingabe und Bewegung

Übe selbstständig: Godot-Playground