Menu
CoddyTech

按键重启

本课属于 Coddy Godot 学习旅程的“游戏规则”单元。第 15 课,共 29 课。

这行代码会丢弃当前场景,并从文件中重新加载:

get_tree().reload_current_scene()

新游戏会从 3 条生命开始,玩家位于绿色方块上,“游戏结束”提示处于隐藏状态。

Main 也处于暂停状态,因此它的 _process 永远不会检测到按键。将 Main 自身的 process_mode 设置为 Node.PROCESS_MODE_ALWAYS。它的子节点会继承此设置,但玩家除外。场景将玩家设置为 Pausable,因此玩家仍会停止。

重新加载不会取消游戏暂停。你需要在重新加载前设置 get_tree().paused = false,否则新游戏会以暂停状态开始。

challenge icon

挑战

简单

游戏结束后,让玩家按 E 键再次开始游戏。

  1. 在 _ready() 中,将此节点自身的 process_mode 设置为 Node.PROCESS_MODE_ALWAYS(不加 $)。
  2. 在 _process() 中,当 lives 为 0 且刚刚按下 action 时,取消游戏暂停,然后重新加载场景。

按“开始”,失去 3 条命后按 E 键:新游戏会以 Lives: 3 开始。然后按“检查”。

亲手试试

extends Node2D

var lives = 3

func _ready():
	$HUD/Lives.text = "Lives: %d" % lives
	$Player.hurt.connect(_on_player_hurt)
	$Blink.timeout.connect(_on_blink_timeout)
	$Blink.process_mode = Node.PROCESS_MODE_ALWAYS

func _process(delta):
	pass

func _on_player_hurt():
	lives -= 1
	$HUD/Lives.text = "Lives: %d" % lives
	if lives == 0:
		$HUD/GameOver.visible = true
		$HUD/Hint.visible = true
		get_tree().paused = true

func _on_blink_timeout():
	if lives == 0:
		$HUD/GameOver.visible = not $HUD/GameOver.visible
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

游戏规则中的所有课

自己练习: Godot 在线编辑器