驾驶
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 * deltalimit_length 会将速度限制在 max_speed 或以下。乘以 delta,也就是上一帧经过的秒数,可以确保赛车在快慢不同的屏幕上速度一致。
点击“开始”运行游戏并进行尝试。点击“检查”运行测试,测试会驾驶你的赛车并告诉你需要修复什么。
挑战
简单让汽车开起来。
- 在
car.gd中,用上面的代码行替换_physics_process里的pass。 - 最后,让排气管在你开车时发光:
$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 在线编辑器