Yönlendir
Coddy'nin Godot Oyunu: Neon Pisti kursunda ders 2 / 20.
Artık araba dönüyor. Input.get_axis aynı anda iki tuşu okur: ilki için -1, ikincisi için 1, hiçbiri için 0:
var steer := Input.get_axis("move_left", "move_right")Gerçek bir araba yalnızca hareket ederken döner ve çok yavaş hareket ederken daha az döner. Bu yüzden dönüş, hıza göre ölçeklendirilir. velocity.dot(forward), arabanın gösterdiği yönde ne kadar hızlı gittiğini verir (geriye doğru giderken negatiftir):
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), araç dururken 0'dan başlayıp saniyede 90 piksele ulaştığında 1'e çıkar. signf, gerçek bir arabada olduğu gibi geriye doğru giderken dönüş yönünü tersine çevirir. Godot'ta daha büyük bir dönüş değeri saat yönünde dönüşe karşılık gelir, bu nedenle sağ yön tuşu bu değeri artırır.
Görev
Kolaymax_speedsatırının altına@export var turn_speed := 3.2ekle.throttlesatırının altındasteerdeğerini oku.forwardsatırından sonraspeeddeğerini hesapla.- Hız arttıktan sonra, yukarıdaki satırla arabayı döndür.
Kendin dene
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
Godot Oyunu: Neon Pisti bölümündeki tüm dersler
Kendi başına pratik yap: Godot playground