تحطيم الطوب
جزء من قسم المشاريع في رحلة Godot على Coddy. الدرس 6 من 36.
تمر الكرة عبر الطوب. والطوب أجسام أيضًا، وكل قطعة منها ضمن المجموعة bricks. تخبرك is_in_group إن كان الجسم قطعة طوب أم المضرب.
لكل قطعة طوب دالة smash(). تحطم القطعة إلى شرارات وتزيلها.
elif body.is_in_group("bricks"):
body.smash()بعد ذلك، ترتد الكرة مبتعدةً عن منتصف قطعة الطوب: إلى الأسفل إذا كان موضعها أدنى من قطعة الطوب، وإلى الأعلى إذا كان أعلى منها. قد تصطدم الكرة بقطعة طوب من الأعلى بعد أن تنزلق عبر فجوة.
if position.y > body.position.y:
velocity.y = abs(velocity.y)
else:
velocity.y = -abs(velocity.y)لا تقلب velocity.y. إذا لمست الكرة قطعتَي طوب في الوقت نفسه، فإن عمليتَي القلب تلغي إحداهما الأخرى.
التحدي
متوسطاجعل الكرة تحطّم الطوب.
- في
_on_body_entered، أضفelifللأجسام الموجودة في المجموعةbricks. - استدعِ
body.smash(). - اجعل الكرة ترتد إلى الأسفل إذا كانت أسفل منتصف الطوبة، وإلى الأعلى إذا كانت فوقه.
اضغط «العب»: تتفتت الطوبات واحدة تلو الأخرى. ثم اضغط «تحقق».
جرّب بنفسك
extends Area2D
var velocity = Vector2(110, -280)
func _ready():
body_entered.connect(_on_body_entered)
func _physics_process(delta):
position += velocity * delta
if position.x < 8 or position.x > 632:
velocity.x = -velocity.x
if position.y < 42:
velocity.y = -velocity.y
func _on_body_entered(body):
if body.name == "Paddle":
velocity.x = (position.x - body.position.x) * 5
velocity.y = -abs(velocity.y)
جميع دروس المشاريع
تدرّب بنفسك: Playground لـ Godot