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()

כל השיעורים ביחידה פרויקטים

תרגלו בעצמכם: Godot אונליין