Menu
CoddyTech

الصخور الكبيرة والصغيرة

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

يجب أن تنقسم الصخور الكبيرة فقط. أعطِ كل صخرة قيمة size، بحيث تكون 2 للصخرة الكبيرة و1 للصغيرة، وارسمها اعتمادًا على ذلك في rock.gd ضمن _ready: scale = Vector2.ONE * size * 0.5.

تأخذ spawn_rock الحجم أيضًا. اضبط rock.size قبل add_child(rock): يتم تشغيل _ready داخل add_child، لذا فإن ضبط الحجم بعد ذلك يأتي متأخرًا جدًا لتغيير المقياس.

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)

أما الصخرة الصغيرة فتتحطم فحسب.

challenge icon

التحدي

صعب

اجعل الصخور الكبيرة تنقسم والصغيرة تتحطم.

  1. في rock.gd، أضف var size = 2 واضبط scale = Vector2.ONE * size * 0.5 في _ready.
  2. أضف وسيطًا size إلى spawn_rock، واضبط rock.size قبل add_child. واجعل قيمة أول 4 صخور 2.
  3. قسّم الصخرة فقط عندما يكون rock.size == 2، إلى صخرتين حجمهما 1.

اضغط «العب» وأطلق النار: ستنقسم الصخور الكبيرة، وستتحطم الصغيرة. ثم اضغط «تحقق».

جرّب بنفسك

extends Node2D

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

func _ready():
	for i in 4:
		spawn_rock(Vector2(randf_range(0, 640), 0), Vector2(randf_range(-90, 90), randf_range(40, 90)))

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

func _on_rock_broken(rock):
	spawn_rock.call_deferred(rock.position, rock.velocity.rotated(0.8) * 1.5)
	spawn_rock.call_deferred(rock.position, rock.velocity.rotated(-0.8) * 1.5)

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

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