Menu
CoddyTech

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.

challenge icon

Görev

Kolay
  1. max_speed satırının altına @export var turn_speed := 3.2 ekle.
  2. throttle satırının altında steer değerini oku.
  3. forward satırından sonra speed değerini hesapla.
  4. 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