Menu
CoddyTech

Mengerem dan Menyeret

Pelajaran 3 dari 20 dalam kursus Game Godot: Sirkuit Neon di Coddy.

Lepaskan tombol Atas dan mobil akan terus melaju selamanya. Dua hal bisa mengatasinya.

Drag sedikit memperlambat mobil yang bergerak di setiap frame. Kurangi 60 persen kecepatan setiap detik:

velocity *= 1.0 - drag * delta

Tombol Bawah juga mengerem. Baca tombol Atas dan Bawah secara bersamaan, sehingga throttle memiliki rentang dari -1 hingga 1. Saat mobil masih bergerak maju, tombol Bawah mendorongnya mundur lebih kuat daripada dorongan mesin ke depan. Setelah mobil berhenti, tombol Bawah membuatnya bergerak mundur:

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

Tantangan

Mudah
  1. Tambahkan @export var drag := 0.6.
  2. Baca throttle dengan get_axis seperti di atas.
  3. Ganti baris yang menambah velocity dengan if dan else.
  4. Sebelum limit_length, terapkan drag.

Coba sendiri

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

Semua pelajaran di Game Godot: Sirkuit Neon

Latihan sendiri: Playground Godot