Menu
CoddyTech

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.

challenge icon

Aufgabe

Einfach
  1. Füge @export var turn_speed := 3.2 unter max_speed ein.
  2. Lies steer unter throttle ein.
  3. Berechne nach forward die speed.
  4. 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