Mengemudi
Pelajaran 1 dari 20 dalam kursus Game Godot: Sirkuit Neon di Coddy.
Dalam kursus ini, kamu membuat satu game utuh, satu fitur setiap pelajaran: game balapan neon dengan tampilan dari atas. Kamu berlomba melawan tiga mobil rival selama tiga putaran di lintasan yang bercahaya.
Proyek ini menyediakan tiga skrip untukmu: car.gd untuk mobil, rival.gd untuk para rival, dan race.gd untuk balapan. Ada dua bagian lain yang disediakan dan tidak terlihat: lintasan, yang menggambar jalan dan menjawab pertanyaan tentangnya, serta adegan. Kamu tidak perlu mengubahnya.
Hari ini mobil belajar melaju. Mobil menyimpan velocity: jumlah piksel yang ditempuhnya setiap detik, serta arahnya. Arah hadap mobil diubah menjadi arah gerak melalui rotation:
var forward := Vector2.RIGHT.rotated(rotation)Saat tombol Atas ditekan, velocity bertambah ke arah tersebut sebesar accel setiap detik. Input.get_action_strength bernilai 1.0 saat tombol ditekan dan 0.0 saat tidak ditekan:
var throttle := Input.get_action_strength("move_up")
velocity += forward * throttle * accel * delta
velocity = velocity.limit_length(max_speed)
position += velocity * deltalimit_length menjaga kecepatan tetap sebesar max_speed atau di bawahnya. Perkalian dengan delta, yaitu jumlah detik sejak bingkai terakhir, menjaga kecepatan tetap sama di layar yang cepat maupun lambat.
Tantangan
Mudah- Di
car.gd, gantipassdi_physics_processdengan baris-baris di atas. - Terakhir, buat knalpot menyala saat kamu berkendara:
$Exhaust.emitting = throttle > 0.0. - Tekan tombol “Main” dan tahan tombol Up (atau W).
Coba sendiri
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
Semua pelajaran di Game Godot: Sirkuit Neon
Latihan sendiri: Playground Godot