ثلاثة قلوب
جزء من قسم المشاريع في رحلة Godot على Coddy. الدرس 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 مرة واحدة عند كل لمسة. يخسر البطل الذي يبقى في مسار الحارس قلبًا في كل مرة يعود فيها الحارس.
التحدي
متوسطاجعل الحارس يُنقص قلبًا من البطل.
- في
main.gd، أضفvar health = 3واربط$Enemy.body_entered. - عند كل ملامسة، أنقص
healthبمقدار واحد، ثم أخفِ$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()
جميع دروس المشاريع
تدرّب بنفسك: Playground لـ Godot