Menu
CoddyTech

驾驶

Coddy Godot 游戏:霓虹赛道 课程的第 1 课,共 20 课。

在这门课程中,你将完成一个完整的游戏,每节课实现一个功能:一款俯视视角的霓虹赛车游戏。你将在发光的赛道上和三辆对手赛车竞速三圈。

这个项目有三个脚本供你编写:赛车上的 car.gd、对手赛车使用的 rival.gd,以及竞速使用的 race.gd。另外还有两个现成的部分,它们会隐藏起来:赛道负责绘制道路并回答与道路有关的问题,场景则负责组织游戏。你不需要修改它们。

今天要让赛车学会驾驶。它会保存一个 velocity,表示每秒移动多少像素,以及移动的方向。赛车的朝向可以转换成一个方向:

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

按住向上键时,速度会沿这个方向每秒增加 accel。按下按键时,Input.get_action_strength 的值是 1.0;未按下时则是 0.0:

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

limit_length 会将速度限制在 max_speed 或以下。乘以 delta,也就是上一帧经过的秒数,可以确保赛车在快慢不同的屏幕上速度一致。

点击“开始”运行游戏并进行尝试。点击“检查”运行测试,测试会驾驶你的赛车并告诉你需要修复什么。

challenge icon

挑战

简单

让汽车开起来。

  1. 在 car.gd 中,用上面的代码行替换 _physics_process 里的 pass。
  2. 最后,让排气管在你开车时发光:$Exhaust.emitting = throttle > 0.0。

按“开始”,并按住上方向键(或 W):汽车就会开出去,排气管也会发光。然后点击“检查”。

亲手试试

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

Godot 游戏:霓虹赛道中的所有课

自己练习: Godot 在线编辑器