Menu
CoddyTech

Frenle ve Sürükle

Coddy'nin Godot Oyunu: Neon Pisti kursunda ders 3 / 20.

Yukarı tuşunu bırakınca araba sonsuza kadar yuvarlanır. Bunu iki şey düzeltir.

Sürtünme, hareket eden arabayı her karede biraz yavaşlatır. Her saniye hızın yüzde 60'ını azalt:

velocity *= 1.0 - drag * delta

Aşağı tuşu da fren yapar. Gazın -1 ile 1 arasında değişmesi için Yukarı ve Aşağı tuşlarını birlikte oku. Araba hâlâ ileri doğru giderken Aşağı, motorun ileri doğru ittiğinden daha güçlü bir şekilde geriye iter. Araba durduktan sonra Aşağı yönü tersine çevirir:

var throttle := Input.get_axis("move_down", "move_up")
if throttle < 0.0 and speed > 10.0:
	velocity += forward * throttle * accel * 1.6 * delta
else:
	velocity += forward * throttle * accel * delta
challenge icon

Görev

Kolay
  1. @export var drag := 0.6 ekle.
  2. Gaz değerini yukarıdaki gibi get_axis ile oku.
  3. Hızı artıran satırı if ve else ile değiştir.
  4. limit_length öncesinde sürtünmeyi uygula.

Kendin dene

extends Node2D

@export var accel := 260.0
@export var max_speed := 200.0
@export var turn_speed := 3.2

var velocity := Vector2.ZERO


func _physics_process(delta: float) -> void:
	var throttle := Input.get_action_strength("move_up")
	var steer := Input.get_axis("move_left", "move_right")

	var forward := Vector2.RIGHT.rotated(rotation)
	var speed := velocity.dot(forward)

	velocity += forward * throttle * accel * delta
	rotation += steer * turn_speed * delta * clampf(absf(speed) / 90.0, 0.0, 1.0) * signf(speed + 0.01)
	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