Menu
CoddyTech

三颗心

本课属于 Coddy Godot 学习旅程的“项目”单元。第 33 课,共 36 课。

碰到守卫会失去一颗心。顶部栏中的三颗心是 Heart1、Heart2 和 Heart3,它们是 $HUD/Hearts 的子节点。守卫是一个 Area2D,因此它碰到英雄时会触发 body_entered:

func _on_enemy_body_entered(body):
	health -= 1
	$HUD/Hearts.get_child(health).visible = false

get_child(i) 根据位置获取节点的子节点,位置从 0 开始计数。第一次受到攻击后,health 是 2,而 get_child(2) 就是 Heart3。心会从右侧开始消失。

每次接触只会触发一次 body_entered。英雄如果一直待在守卫的行进路线上,守卫每次回来时都会让英雄失去一颗心。

challenge icon

挑战

中等

让守卫让英雄损失一颗心。

  1. 在 main.gd 中,添加 var health = 3 并连接 $Enemy.body_entered。
  2. 每次碰到守卫时,让 health 减 1,然后隐藏 $HUD/Hearts.get_child(health)。

按下“开始”并碰到守卫:最右边的心会消失。然后按“检查”。

亲手试试

extends Node2D

var has_key = false

func _ready():
	$Key.body_entered.connect(_on_key_body_entered)
	$DoorZone.body_entered.connect(_on_door_zone_body_entered)

func _on_key_body_entered(body):
	has_key = true
	$Key.queue_free()
	$HUD/KeyIcon.visible = true

func _on_door_zone_body_entered(body):
	if has_key:
		$Door.queue_free()
		$DoorZone.queue_free()

项目中的所有课

自己练习: Godot 在线编辑器