Menu
CoddyTech

Fahren

Lektion 1 von 20 im Kurs Godot-Spiel: Neon-Rennstrecke von Coddy.

In diesem Kurs entwickelst du ein ganzes Spiel, eine Funktion pro Lektion: ein Neon-Rennspiel aus der Vogelperspektive. Du fährst drei Runden lang auf einer leuchtenden Rennstrecke gegen drei rivalisierende Autos.

Das Projekt enthält drei Skripte für dich: car.gd für das Auto, rival.gd für die Rivalen und race.gd für das Rennen. Zwei weitere Teile sind vorgegeben und bleiben verborgen: die Rennstrecke, die die Straße zeichnet und Fragen dazu beantwortet, und die Szene. Du musst sie nicht ändern.

Heute lernt das Auto fahren. Es behält eine velocity: wie viele Pixel es pro Sekunde zurücklegt und in welche Richtung. Die Richtung, in die das Auto zeigt, wird aus seiner rotation in einen Richtungsvektor umgewandelt:

var forward := Vector2.RIGHT.rotated(rotation)

Während die Pfeiltaste nach oben gedrückt gehalten wird, wächst die Geschwindigkeit pro Sekunde um accel in diese Richtung. Input.get_action_strength ist 1.0, solange die Taste gedrückt ist, und 0.0, wenn sie nicht gedrückt ist:

var throttle := Input.get_action_strength("move_up")
velocity += forward * throttle * accel * delta
velocity = velocity.limit_length(max_speed)
position += velocity * delta

limit_length hält die Geschwindigkeit bei max_speed oder darunter. Die Multiplikation mit delta, der seit dem letzten Frame vergangenen Zeit in Sekunden, sorgt dafür, dass die Geschwindigkeit auf einem schnellen und einem langsamen Bildschirm gleich bleibt.

challenge icon

Aufgabe

Einfach
  1. Ersetze in car.gd pass in _physics_process durch die obigen Zeilen.
  2. Zuletzt lässt du den Auspuff leuchten, während du fährst: $Exhaust.emitting = throttle > 0.0.
  3. Drücke „Spielen“ und halte die Aufwärtstaste (oder W) gedrückt.

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:
	pass  # drive here

Alle Lektionen in Godot-Spiel: Neon-Rennstrecke

Übe selbstständig: Godot-Playground