Menu
CoddyTech

ثلاثة قلوب

جزء من قسم المشاريع في رحلة 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 مرة واحدة عند كل لمسة. يخسر البطل الذي يبقى في مسار الحارس قلبًا في كل مرة يعود فيها الحارس.

challenge icon

التحدي

متوسط

اجعل الحارس يُنقص قلبًا من البطل.

  1. في main.gd، أضف var health = 3 واربط $Enemy.body_entered.
  2. عند كل ملامسة، أنقص 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