Menu
CoddyTech

الاصطدام بالأنابيب

جزء من قسم المشاريع في رحلة 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.

الطائر والأنابيب والمؤقّت قابلة للإيقاف المؤقت، لذا يجمّدها الإيقاف المؤقت جميعًا.

challenge icon

التحدي

صعب

أنهِي اللعبة عند الاصطدام.

  1. في pipe.gd، أضِف signal hit، واربط body_entered في _ready، وأصدِر hit عندما يدخل جسم.
  2. في flyer.gd، أضِف signal crashed وأصدِره عندما تتجاوز position.y القيمة 306.
  3. في 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)

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

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