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 * deltaTombol 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 * deltaTantangan
Mudah- Tambahkan
@export var drag := 0.6. - Baca throttle dengan
get_axisseperti di atas. - Ganti baris yang menambah velocity dengan if dan else.
- 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