Menu
CoddyTech
flag Ar iconالعربيةdown icon

اصطدم وأعد التشغيل

جزء من قسم المشاريع في رحلة Godot على Coddy. الدرس 18 من 33.

تطير السفينة بين الصخور. يجب أن تنتهي اللعبة عندما يصطدم صخر بالسفينة. في rock.gd، داخل _on_body_entered، تكون السفينة هي الجسم المسمى Ship. يُصدر الصخر إشارة hit_ship. تربطها main.gd في spawn_rock وتنهي اللعبة:

func _on_hit_ship():
	$HUD/Message.text = "Game Over"
	$Ship.hide()
	$Boom.position = $Ship.position
	$Boom.emitting = true
	get_tree().paused = true

Boom هو عنصر CPUParticles2D يعمل مرة واحدة. اضبط emitting على true، وسيُصدر دفعة واحدة. وهو عنصر فرعي من Main، الذي يعمل دائمًا، لذا فإنه يعمل أثناء إيقاف اللعبة مؤقتًا.

أخيرًا، اجعل Enter يبدأ لعبة جديدة أثناء الإيقاف المؤقت، كما في Breakout: ألغِ الإيقاف المؤقت، ثم استخدم reload_current_scene(). ويعمل هذا أيضًا بعد الفوز.

challenge icon

التحدي

متوسط
  1. في rock.gd، أضف signal hit_ship وأصدره عندما يكون الجسم هو Ship.
  2. في main.gd، اربطه في spawn_rock بـ _on_hit_ship. يعرض Game Over، ويخفي السفينة، ويُحدث انفجارًا عند $Boom في موضع السفينة، ويوقف اللعبة مؤقتًا.
  3. أثناء الإيقاف المؤقت، يؤدي الضغط على Enter إلى إلغاء الإيقاف المؤقت وإعادة تحميل المشهد.

جرّب بنفسك

extends Node2D

const ROCK = preload("res://rock.tscn")

var score = 0
var rocks_left = 4

func _ready():
	for i in 4:
		spawn_rock(Vector2(randf_range(0, 640), 0), Vector2(randf_range(-90, 90), randf_range(40, 90)), 2)
	$HUD/Score.text = "Score: 0"

func spawn_rock(where, velocity, size):
	var rock = ROCK.instantiate()
	rock.position = where
	rock.velocity = velocity
	rock.size = size
	rock.broken.connect(_on_rock_broken)
	add_child(rock)

func _on_rock_broken(rock):
	if rock.size == 2:
		spawn_rock.call_deferred(rock.position, rock.velocity.rotated(0.8) * 1.5, 1)
		spawn_rock.call_deferred(rock.position, rock.velocity.rotated(-0.8) * 1.5, 1)
		score += 20
		rocks_left += 2
	else:
		score += 50
	rocks_left -= 1
	$HUD/Score.text = "Score: %d" % score
	if rocks_left == 0:
		$HUD/Message.text = "You Win!"
		get_tree().paused = true
quiz iconاختبر نفسك

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

جميع دروس المشاريع

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