الاصطدام بالأنابيب
جزء من قسم المشاريع في رحلة Godot على Coddy. الدرس 26 من 36.
يؤدي الاصطدام بأنبوب أو بالأرض إلى إنهاء اللعبة. وكلاهما يؤدي إلى دالة واحدة في main.gd:
func _on_crash():
$HUD/Message.text = "Game Over"
get_tree().paused = trueأنبوب. الأنبوب هو Area2D يتكوّن من شكلين، النصف العلوي والنصف السفلي. لا يوجد شكل في الفجوة. في pipe.gd، اربط body_entered وأصدر إشارة hit. يربط main.gd إشارة hit لكل أنبوب جديد قبل إضافته.
الأرض. يقع سطحها العلوي عند y = 318. تبعد حافة الطائر 12 بكسلًا عن منتصفه، لذا يلامس الأرض عندما تتجاوز position.y القيمة 306. عندها يصدر flyer.gd إشارة crashed.
الطائر والأنابيب والمؤقّت قابلة للإيقاف المؤقت، لذا يجمّدها الإيقاف المؤقت جميعًا.
التحدي
صعبأنهِي اللعبة عند الاصطدام.
- في
pipe.gd، أضِفsignal hit، واربطbody_enteredفي_ready، وأصدِرhitعندما يدخل جسم. - في
flyer.gd، أضِفsignal crashedوأصدِره عندما تتجاوزposition.yالقيمة306. - في
main.gd، اربطhitلكل أنبوب وcrashedللطائر بـ_on_crash، التي تعرضGame Overوتوقف اللعبة.
اضغط «العب» ثم اسقط: ستظهر رسالة Game Over. ثم اضغط «تحقق».
جرّب بنفسك
extends Node2D
const PIPE = preload("res://pipe.tscn")
func _ready():
$PipeTimer.timeout.connect(_on_pipe_timer_timeout)
func _on_pipe_timer_timeout():
var pipe = PIPE.instantiate()
pipe.position = Vector2(700, randf_range(100, 250))
$Pipes.add_child(pipe)
جميع دروس المشاريع
3مشروع: الطائر المحلّق
جاذبية الطائراجعل الطائر يرفرفتدرّب بنفسك: Playground لـ Godot