Menu
CoddyTech
flag He iconעבריתdown icon

סלעים נסחפים

חלק מהיחידה פרויקטים במסלול ה-Godot של Coddy. שיעור 14 מתוך 33.

עכשיו מגיעים הסלעים. סלע הוא סצנה, rock.tscn, ו־rock.gd מזיז אותו. הוא נסחף במהירות velocity שלו, מסתובב לאט ועובר לצד השני כמו החללית. סלע גדול, לכן הוא עובר לצד השני בקואורדינטות ‎-30 ו־670 במקום 0 ו־640. כך הוא יוצא לגמרי מהמסך לפני שהוא חוזר.

main.gd יוצר סלעים בעזרת פונקציה, כך שכל יצירת הסלעים מתבצעת במקום אחד:

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

בתוך _ready, קוראים לה ארבע פעמים באמצעות לולאה. כל סלע מקבל מיקום אקראי לאורך הקצה העליון ומהירות אקראית:

spawn_rock(Vector2(randf_range(0, 640), 0), Vector2(randf_range(-90, 90), randf_range(40, 90)))
challenge icon

אתגר

קשה
  1. ב־rock.gd, הוסיפו את _physics_process. הזיזו באמצעות velocity * delta והוסיפו 0.5 * delta אל rotation.
  2. עטפו את הסלע: מעבר ל־-30 או ל־670 בציר x, הזיזו אותו 700 בכיוון ההפוך. מעבר ל־-30 או ל־390 בציר y, הזיזו אותו 420.
  3. ב־main.gd, הוסיפו את const ROCK = preload("res://rock.tscn") ואת הפונקציה spawn_rock(where, velocity). צרו 4 סלעים בתוך _ready כפי שמוצג.

נסו בעצמכם

extends Area2D

var velocity = Vector2.ZERO

# Bursts into dust where the rock is. Call it when the rock breaks.
func burst():
	var dust = CPUParticles2D.new()
	dust.position = position
	dust.one_shot = true
	dust.explosiveness = 1.0
	dust.amount = 20
	dust.lifetime = 0.7
	dust.spread = 180.0
	dust.gravity = Vector2.ZERO
	dust.initial_velocity_min = 30.0
	dust.initial_velocity_max = 120.0 * scale.x
	dust.scale_amount_min = 2.0
	dust.scale_amount_max = 5.0
	dust.color = Color(0.75, 0.82, 0.95)
	dust.finished.connect(dust.queue_free)
	get_parent().add_child(dust)
	dust.emitting = true
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה פרויקטים

תרגלו בעצמכם: Godot אונליין