Menu
CoddyTech

Tombol Boost

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

Satu boost lagi, kali ini kamu yang mengatur waktunya. Sebuah meter terisi selama sepuluh detik; saat penuh, Enter (atau E) mengaktifkan boost selama satu detik dan mengosongkannya.

if Input.is_action_just_pressed("action") and boost_charge >= 1.0:
	boost_charge = 0.0
	boost_time = 1.0

is_action_just_pressed hanya bernilai true pada frame saat tombol ditekan, jadi menahan Enter hanya mengaktifkannya sekali. Isi meter dan tampilkan di bilah HUD, yang lebarnya adalah scale.x:

boost_charge = minf(1.0, boost_charge + delta / 10.0)
$"../HUD/Boost".scale.x = boost_charge
challenge icon

Tantangan

Mudah
  1. Tambahkan var boost_charge := 0.0.
  2. Setelah membaca tombol, aktifkan boost seperti di atas.
  3. Lalu isi meter dan atur lebar bilah.
  4. Tekan tombol “Main”, tunggu hingga bilah terisi, lalu tekan Enter di lintasan lurus.

Coba sendiri

extends Node2D

@export var accel := 260.0
@export var max_speed := 200.0
@export var turn_speed := 3.2
@export var drag := 0.6
@export var grip := 7.0

var velocity := Vector2.ZERO
var boost_time := 0.0

@onready var track: Node2D = $"../Track"


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)
	var top := max_speed
	var grip_now := grip
	if boost_time > 0.0:
		boost_time -= delta
		top = max_speed * 1.3
		velocity += forward * accel * delta
	for pad in get_tree().get_nodes_in_group("boost_pads"):
		if position.distance_to(pad.position) < 22.0:
			boost_time = maxf(boost_time, 0.4)
	for oil in get_tree().get_nodes_in_group("oil"):
		if position.distance_to(oil.position) < 20.0:
			grip_now = grip * 0.12
	if not track.is_on_road(position):
		top = max_speed * 0.45
		velocity *= 1.0 - 2.5 * delta

	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)

	var side := forward.orthogonal()
	velocity -= side * velocity.dot(side) * minf(1.0, grip_now * delta)
	velocity *= 1.0 - drag * delta
	if velocity.length() > top:
		velocity = velocity.move_toward(velocity.limit_length(top), accel * 2.0 * delta)
	position += velocity * delta
	$Exhaust.emitting = throttle > 0.0 or boost_time > 0.0
	$Flame.visible = boost_time > 0.0
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Game Godot: Sirkuit Neon

Latihan sendiri: Playground Godot