ثلاثة قلوب
جزء من قسم المشاريع في رحلة Godot على Coddy. الدرس 30 من 33.
ينبغي أن يؤدي لمس الحارس إلى فقدان قلب. القلوب الثلاثة في الشريط العلوي هي 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()
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المشاريع
1مشروع: Breakout
مضرب Breakoutإبقاء المضرب على الشاشة4مشروع: استكشاف الزنزانة
تجوّل في الزنزانةالتقط المفتاح2مشروع: مطلق النار على الكويكبات
أدر السفينةأشعل المحركتدرّب بنفسك: Playground لـ Godot