Menu
CoddyTech

إعادة التشغيل عند ضغط مفتاح

جزء من قسم قواعد اللعبة في رحلة Godot على Coddy. الدرس 15 من 29.

هذا السطر يتخلّص من المشهد ويحمّله من جديد من ملفه:

get_tree().reload_current_scene()

تبدأ اللعبة الجديدة بثلاثة أرواح، ويكون اللاعب على المربع الأخضر، وتكون «انتهت اللعبة» مخفية.

يكون Main متوقفًا مؤقتًا أيضًا، لذا لا يرى مفتاح الإدخال أبدًا عبر _process. اضبط process_mode الخاص بـ Main على Node.PROCESS_MODE_ALWAYS. ترث العقد الفرعية هذا الوضع، باستثناء اللاعب. يضبط المشهد اللاعب على وضع Pausable، لذا يظل متوقفًا.

لا يؤدي إعادة التحميل إلى إلغاء الإيقاف المؤقت للعبة. اضبط get_tree().paused = false قبل إعادة التحميل، وإلا فستبدأ اللعبة الجديدة وهي متوقفة مؤقتًا.

challenge icon

التحدي

سهل

اجعل اللاعب يضغط على E للعب مرة أخرى بعد انتهاء اللعبة.

  1. في _ready()، عيّن process_mode الخاص بهذه العقدة نفسها إلى Node.PROCESS_MODE_ALWAYS (من دون $).
  2. في _process()، عندما تكون lives تساوي 0 ويكون قد تم الضغط للتو على action، ألغِ إيقاف اللعبة مؤقتًا، ثم أعد تحميل المشهد.

اضغط على «العب»، واخسر ثلاث أرواح، ثم اضغط على E: تبدأ لعبة جديدة مع Lives: 3. ثم اضغط على «تحقق».

جرّب بنفسك

extends Node2D

var lives = 3

func _ready():
	$HUD/Lives.text = "Lives: %d" % lives
	$Player.hurt.connect(_on_player_hurt)
	$Blink.timeout.connect(_on_blink_timeout)
	$Blink.process_mode = Node.PROCESS_MODE_ALWAYS

func _process(delta):
	pass

func _on_player_hurt():
	lives -= 1
	$HUD/Lives.text = "Lives: %d" % lives
	if lives == 0:
		$HUD/GameOver.visible = true
		$HUD/Hint.visible = true
		get_tree().paused = true

func _on_blink_timeout():
	if lives == 0:
		$HUD/GameOver.visible = not $HUD/GameOver.visible
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس قواعد اللعبة

تدرّب بنفسك: Playground لـ Godot