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

פסילות בברייקאאוט

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

כשהמשטח מחטיא, הכדור נופל מעבר לתחתית. תן לשחקן שלושה חיים.

ב־ball.gd, הכדור הוחמץ כשהוא יורד מתחת ל־y = 380. פלט אות missed והגש שוב את הכדור מעל המשטח.

if position.y > 380:
	missed.emit()
	position = Vector2(320, 290)
	velocity = Vector2(110, -280)

ב־main.gd, הפחת את מספר החיים. כשמספרם מגיע לאפס, הצג את Game Over והשהה באמצעות get_tree().paused = true. המשטח והכדור הם Pausable, ולכן הם קופאים. Main הוא Always, ולכן הוא ממשיך לפעול ויכול לקרוא את Enter:

func _process(delta):
	if get_tree().paused and Input.is_action_just_pressed("action"):
		get_tree().paused = false
		get_tree().reload_current_scene()

בטל את ההשהיה לפני הטעינה מחדש. ההשהיה חלה על העץ, לא על הסצנה, ולכן סצנה שנטענה מחדש תתחיל כשהיא קפואה.

challenge icon

אתגר

קשה
  1. ב־ball.gd, הוסיפו signal missed. כאשר position.y גדול מ־380, פלטו אותו והחזירו את הכדור אל (320, 290) במהירות (110, -280).
  2. ב־main.gd, התחילו עם var lives = 3 והציגו Lives: 3 בתוך $HUD/Lives. כל פספוס מוריד חיים ומעדכן את התווית.
  3. כשנותרו 0 חיים, הציגו Game Over בתוך $HUD/Message והשהו את המשחק.
  4. כשהמשחק מושהה, לחיצה על Enter (מקש action) מבטלת את ההשהיה וטוענת מחדש את הסצנה.

נסו בעצמכם

extends Node2D

const BRICK = preload("res://brick.tscn")
const COLORS = [Color(1, 0.42, 0.42), Color(1, 0.78, 0.34), Color(0.49, 0.95, 0.75), Color(0.369, 0.635, 1), Color(0.75, 0.82, 0.95)]

var score = 0

func _ready():
	for row in 5:
		for column in 8:
			var brick = BRICK.instantiate()
			brick.position = Vector2(68 + column * 72, 60 + row * 26)
			brick.color = COLORS[row]
			add_child(brick)
	$Ball.brick_broken.connect(_on_brick_broken)
	$HUD/Score.text = "Score: 0"

func _on_brick_broken():
	score += 10
	$HUD/Score.text = "Score: %d" % score
quiz iconבחנו את עצמכם

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

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

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