三颗心
本课属于 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 = falseget_child(i) 根据位置获取节点的子节点,位置从 0 开始计数。第一次受到攻击后,health 是 2,而 get_child(2) 就是 Heart3。心会从右侧开始消失。
每次接触只会触发一次 body_entered。英雄如果一直待在守卫的行进路线上,守卫每次回来时都会让英雄失去一颗心。
挑战
中等让守卫让英雄损失一颗心。
- 在
main.gd中,添加var health = 3并连接$Enemy.body_entered。 - 每次碰到守卫时,让
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 在线编辑器