Mengemudikan
Pelajaran 2 dari 20 dalam kursus Game Godot: Sirkuit Neon di Coddy.
Sekarang mobil berbelok. Input.get_axis membaca dua tombol sekaligus: -1 untuk tombol pertama, 1 untuk tombol kedua, 0 jika tidak ada:
var steer := Input.get_axis("move_left", "move_right")Mobil sungguhan hanya berbelok saat melaju, dan belokannya lebih kecil saat bergerak sangat lambat. Karena itu, belokan diskalakan berdasarkan kecepatan. velocity.dot(forward) menunjukkan seberapa cepat mobil bergerak ke arah yang ditujunya (bernilai negatif saat bergerak mundur):
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) meningkat dari 0 saat mobil berhenti menjadi 1 saat kecepatannya 90 piksel per detik. signf membalik arah belokan saat mobil bergerak mundur, seperti mobil sungguhan. Di Godot, rotasi yang lebih besar membuat mobil berbelok searah jarum jam, jadi Right menambah nilainya.
Tantangan
Mudah- Tambahkan
@export var turn_speed := 3.2di bawahmax_speed. - Baca
steerdi bawahthrottle. - Setelah
forward, hitungspeed. - Setelah velocity bertambah, belokkan mobil dengan baris di atas.
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:
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
Semua pelajaran di Game Godot: Sirkuit Neon
Latihan sendiri: Playground Godot