Menu
CoddyTech

Jazda

Lekcja 1 z 20 w kursie Gra w Godot: Neonowy tor w Coddy.

W tym kursie zbudujesz całą grę, lekcja po lekcji: neonową grę wyścigową z widokiem z góry. Ścigasz się z trzema rywalami na trzech okrążeniach po świecącym torze.

Projekt zawiera trzy skrypty: car.gd dla samochodu, rival.gd dla rywali i race.gd dla wyścigu. Dwie dodatkowe części są już gotowe i pozostają niewidoczne: tor, który rysuje drogę i odpowiada na pytania na jej temat, oraz scena. Nie musisz ich zmieniać.

Dziś samochód uczy się jeździć. Ma velocity: określa ona, ile pikseli samochód pokonuje w każdej sekundzie i w którym kierunku. Kierunek, w którym samochód jest zwrócony, to rotation przekształcone w wektor kierunku:

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

Gdy trzymasz klawisz strzałki w górę, prędkość w tym kierunku rośnie o accel na sekundę. Input.get_action_strength ma wartość 1.0, gdy klawisz jest wciśnięty, i 0.0, gdy nie jest:

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

limit_length utrzymuje prędkość na poziomie max_speed lub niższym. Mnożenie przez delta, czyli czas w sekundach od poprzedniej klatki, sprawia, że prędkość jest taka sama na szybkim i wolnym ekranie.

challenge icon

Wyzwanie

Łatwy
  1. W pliku car.gd zastąp pass w _physics_process powyższymi liniami.
  2. Na koniec spraw, by wydech świecił podczas jazdy: $Exhaust.emitting = throttle > 0.0.
  3. Naciśnij „Graj” i przytrzymaj klawisz strzałki w górę (lub W).

Spróbuj swoich sił

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

Wszystkie lekcje w sekcji Gra w Godot: Neonowy tor

Poćwicz samodzielnie: Edytor online Godot