Langsam beschleunigen
Teil des Abschnitts Eingabe und Bewegung der Godot-Journey von Coddy. Lektion 18 von 28.
Der Held erreicht in einem Frame seine volle Geschwindigkeit und kommt in einem Frame zum Stehen. Das wirkt steif.
move_toward(from, to, step) bewegt die Zahl from um höchstens step in Richtung to, ohne darüber hinauszugehen. move_toward(0, 220, 15) ergibt 15. Bei jeder Wiederholung pro Frame ergibt das 30, 45 und so weiter bis 220.
Verwende es für velocity.x, in Richtung der Geschwindigkeit, die die Tasten vorgeben:
var direction = Input.get_axis("move_left", "move_right")
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)acceleration ist die pro Sekunde gewonnene Geschwindigkeit und wird daher mit delta multipliziert. Bei 900 erreicht der Held 220 in etwa einer Viertelsekunde. Wenn keine Taste gedrückt wird, ist das Ziel 0, also wird der Held langsamer, bis er zum Stehen kommt.
Aufgabe
MittelLass den Helden gleichmäßig beschleunigen und abbremsen.
- Speichere
Input.get_axis("move_left", "move_right")invar direction. - Setze
velocity.xmitmove_toward(velocity.x, direction * speed, acceleration * delta).
Drücke „Spielen“ und halte eine Pfeiltaste gedrückt: Der Held erreicht eine Geschwindigkeit von bis zu 220 und wird langsamer, wenn du loslässt. Klicke dann auf „Prüfen“.
Probier es selbst
extends CharacterBody2D
var speed = 220
var acceleration = 900
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
velocity.x = Input.get_axis("move_left", "move_right") * speed
move_and_slide()
Alle Lektionen in Eingabe und Bewegung
1Eingabeaktionen
Drücken zum BewegenLinks und rechtsEine AchseVier RichtungenGerade erst gedrücktNicht behandelte Eingabe4Flüssige Bewegung
Langsam beschleunigenReibungIn Bewegungsrichtung schauenAuf den Bildschirm begrenzenBeide Achsen begrenzenÜbe selbstständig: Godot-Playground