الاصطدام وإعادة التشغيل
جزء من قسم المشاريع في رحلة Godot على Coddy. الدرس 21 من 36.
تطير السفينة بين الصخور. يجب أن تنهي الصخرة التي تلامس السفينة اللعبة. في 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 = trueBoom هو CPUParticles2D يعمل لمرة واحدة. عيّن emitting إلى true، وسيُصدر دفعة واحدة. وهو عنصر فرعي لـ Main، الذي يكون مضبوطًا على Always، لذا يعمل أثناء إيقاف اللعبة مؤقتًا.
وأخيرًا، اجعل Enter يبدأ لعبة جديدة أثناء الإيقاف المؤقت، كما في Breakout: ألغِ الإيقاف المؤقت، ثم استخدم reload_current_scene(). ويعمل ذلك أيضًا بعد الفوز.
التحدي
متوسطأنهِ اللعبة عندما يصطدم صخر بالسفينة.
- في
rock.gd، أضفsignal hit_shipوأصدر الإشارة عندما يكون الجسم هوShip. - في
main.gd، اربطها فيspawn_rockبالدالة_on_hit_ship، التي تعرضGame Over، وتُخفي السفينة، وتُحدث انفجارًا عند موضع$Boom، ثم توقف اللعبة. - أثناء الإيقاف المؤقت، اضغط على 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
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس المشاريع
2مشروع: مطلق الكويكبات
أدِر السفينةشغّل المحركتدرّب بنفسك: Playground لـ Godot