Lenken
Lektion 2 von 20 im Kurs Godot-Spiel: Neon-Rennstrecke von Coddy.
Jetzt biegt das Auto ab. Input.get_axis liest zwei Tasten gleichzeitig aus: -1 für die erste, 1 für die zweite, 0 für keine:
var steer := Input.get_axis("move_left", "move_right")Ein echtes Auto biegt nur ab, wenn es rollt, und weniger stark, wenn es sich kaum bewegt. Deshalb wird das Abbiegen anhand der Geschwindigkeit skaliert. velocity.dot(forward) gibt an, wie schnell das Auto in die Richtung fährt, in die es zeigt (bei Rückwärtsfahrt negativ):
var speed := velocity.dot(forward)
rotation += steer * turn_speed * delta * clampf(absf(speed) / 90.0, 0.0, 1.0) * signf(speed + 0.01)clampf(absf(speed) / 90.0, 0.0, 1.0) steigt von 0 im Stillstand auf 1 bei 90 Pixeln pro Sekunde. signf kehrt die Richtung des Abbiegens bei Rückwärtsfahrt um, wie bei einem echten Auto. In Godot bedeutet eine größere Rotation eine Drehung im Uhrzeigersinn, also wird sie durch Rechts erhöht.
Aufgabe
Einfach- Füge
@export var turn_speed := 3.2untermax_speedein. - Lies
steerunterthrottleein. - Berechne nach
forwarddiespeed. - Nachdem velocity zunimmt, lenke das Auto mit der obigen Zeile.
Probier es selbst
extends Node2D
@export var accel := 260.0
@export var max_speed := 200.0
var velocity := Vector2.ZERO
func _physics_process(delta: float) -> void:
var throttle := Input.get_action_strength("move_up")
var forward := Vector2.RIGHT.rotated(rotation)
velocity += forward * throttle * accel * delta
velocity = velocity.limit_length(max_speed)
position += velocity * delta
$Exhaust.emitting = throttle > 0.0
Alle Lektionen in Godot-Spiel: Neon-Rennstrecke
Übe selbstständig: Godot-Playground