Yol Tutuşu ve Drift
Coddy'nin Godot Oyunu: Neon Pisti kursunda ders 4 / 20.
Keskin dönünce araba hokey diski gibi kayar: bir yöne bakarken başka bir yöne gider. Lastikler bunu önler. Arabanın ileri doğru yuvarlanmasını sağlarlar ama yana doğru gitmesini önlerler.
forward.orthogonal(), arabanın yan tarafını gösterir. Hızı bu yöndeki bileşenine ayır ve her karede bu bileşenin büyük kısmını çıkar:
var side := forward.orthogonal()
velocity -= side * velocity.dot(side) * minf(1.0, grip * delta)grip değeri 7 olduğunda araba, dönüşten kısa süre sonra burnunun yönünü takip eder ve kısa süreliğine kayar. Tutuş azaldıkça kayma uzar. minf(1.0, ...), bir karenin yana doğru bileşenin tamamından fazlasını çıkarmamasını sağlar.
Görev
Kolay@export var grip := 7.0ekle.- Döndükten sonra, yukarıdaki gibi yana doğru olan hızı azalt.
- “Oyna” düğmesine bas ve bir virajı dön. Drift yapmak için Inspector'da 2 tutuş değeri dene.
Kendin dene
extends Node2D
@export var accel := 260.0
@export var max_speed := 200.0
@export var turn_speed := 3.2
@export var drag := 0.6
var velocity := Vector2.ZERO
func _physics_process(delta: float) -> void:
var throttle := Input.get_axis("move_down", "move_up")
var steer := Input.get_axis("move_left", "move_right")
var forward := Vector2.RIGHT.rotated(rotation)
var speed := velocity.dot(forward)
if throttle < 0.0 and speed > 10.0:
velocity += forward * throttle * accel * 1.6 * delta
else:
velocity += forward * throttle * accel * delta
rotation += steer * turn_speed * delta * clampf(absf(speed) / 90.0, 0.0, 1.0) * signf(speed + 0.01)
velocity *= 1.0 - drag * 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