Menu
CoddyTech

Lái xe

Bài học 1 trên 20 trong khóa học Trò chơi Godot: Mạch neon của Coddy.

Trong khóa học này, bạn sẽ xây dựng trọn vẹn một trò chơi, mỗi bài học là một tính năng: trò đua xe neon nhìn từ trên cao. Bạn đua với ba chiếc xe đối thủ trong ba vòng quanh đường đua phát sáng.

Dự án có ba tập lệnh dành cho bạn: car.gd gắn với xe, rival.gd dành cho các xe đối thủ và race.gd dành cho cuộc đua. Hai phần khác đã được cung cấp và không hiển thị: đường đua, phần vẽ đường và trả lời các câu hỏi về đường đua, cùng với cảnh. Bạn không cần thay đổi chúng.

Hôm nay, xe sẽ học cách lái. Xe duy trì một velocity: số pixel xe di chuyển mỗi giây và hướng di chuyển. Hướng đầu xe chỉ được chuyển từ rotation thành một hướng như sau:

var forward := Vector2.RIGHT.rotated(rotation)

Khi bạn giữ phím Up, vận tốc tăng theo hướng đó với gia tốc accel mỗi giây. Input.get_action_strength có giá trị 1.0 khi bạn nhấn phím và 0.0 khi bạn không nhấn:

var throttle := Input.get_action_strength("move_up")
velocity += forward * throttle * accel * delta
velocity = velocity.limit_length(max_speed)
position += velocity * delta

limit_length giữ tốc độ ở mức max_speed hoặc thấp hơn. Nhân với delta, tức số giây kể từ khung hình trước, giúp tốc độ không đổi trên màn hình nhanh lẫn chậm.

Chơi chạy trò chơi để bạn trải nghiệm. Kiểm tra chạy các bài kiểm tra, điều khiển xe của bạn và cho biết cần sửa gì.

challenge icon

Thử thách

Dễ

Cho xe chạy.

  1. Trong car.gd, thay pass trong _physics_process bằng các dòng ở trên.
  2. Cuối cùng, làm cho ống xả phát sáng khi bạn lái xe: $Exhaust.emitting = throttle > 0.0.

Nhấn Chơi và giữ phím mũi tên lên (hoặc W): xe sẽ chạy, ống xả phát sáng. Sau đó nhấn Kiểm tra.

Tự làm thử

extends Node2D

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

var velocity := Vector2.ZERO


func _physics_process(delta: float) -> void:
	pass  # drive here

Tất cả bài học trong Trò chơi Godot: Mạch neon

Tự luyện tập: Playground Godot