إعادة التشغيل عند ضغط مفتاح
جزء من قسم قواعد اللعبة في رحلة Godot على Coddy. الدرس 15 من 29.
هذا السطر يتخلّص من المشهد ويحمّله من جديد من ملفه:
get_tree().reload_current_scene()تبدأ اللعبة الجديدة بثلاثة أرواح، ويكون اللاعب على المربع الأخضر، وتكون «انتهت اللعبة» مخفية.
يكون Main متوقفًا مؤقتًا أيضًا، لذا لا يرى مفتاح الإدخال أبدًا عبر _process. اضبط process_mode الخاص بـ Main على Node.PROCESS_MODE_ALWAYS. ترث العقد الفرعية هذا الوضع، باستثناء اللاعب. يضبط المشهد اللاعب على وضع Pausable، لذا يظل متوقفًا.
لا يؤدي إعادة التحميل إلى إلغاء الإيقاف المؤقت للعبة. اضبط get_tree().paused = false قبل إعادة التحميل، وإلا فستبدأ اللعبة الجديدة وهي متوقفة مؤقتًا.
التحدي
سهلاجعل اللاعب يضغط على E للعب مرة أخرى بعد انتهاء اللعبة.
- في
_ready()، عيّنprocess_modeالخاص بهذه العقدة نفسها إلىNode.PROCESS_MODE_ALWAYS(من دون$). - في
_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
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس قواعد اللعبة
تدرّب بنفسك: Playground لـ Godot