Menu
CoddyTech

התחמקות: שחקו שוב

חלק מהיחידה חוקי המשחק במסלול ה-Godot של Coddy. שיעור 29 מתוך 29.

השלב האחרון מאפשר לשחקן ללחוץ על E אחרי סיום המשחק כדי לשחק שוב.

עשית זאת בחדר הקוצים. הגדר את process_mode של Main ל־Node.PROCESS_MODE_ALWAYS, כדי ש־_process ירוץ בזמן שהמשחק מושהה. השחקן, שני הטיימרים וכל הבלוקים מוגדרים כניתנים להשהיה בסצנות שלהם, ולכן הם עדיין נעצרים. בלחיצה על המקש, בטל את ההשהיה וטען מחדש:

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

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

challenge icon

אתגר

קשה

אפשר לשחקן ללחוץ על E כדי לשחק שוב.

  1. ב־_ready(), הגדר את process_mode של הצומת הזה ל־Node.PROCESS_MODE_ALWAYS.
  2. במסך סיום המשחק, הצג גם את $HUD/Hint.
  3. הוסף את _process(): כאשר lives הוא 0 והפעולה action נלחצה זה עתה, בטל את השהיית המשחק וטען מחדש את הסצנה.

לחץ על "שחק", הפסד ולחץ על E: משחק חדש מתחיל עם Score: 0. לאחר מכן לחץ על "בדיקה".

נסו בעצמכם

extends Node2D

var block_scene = preload("res://block.tscn")
var score = 0
var lives = 3

func _ready():
	$HUD/Score.text = "Score: %d" % score
	$HUD/Lives.text = "Lives: %d" % lives
	$SpawnTimer.timeout.connect(_on_spawn_timer_timeout)
	$ScoreTimer.timeout.connect(_on_score_timer_timeout)
	$Player.hurt.connect(_on_player_hurt)

func _on_spawn_timer_timeout():
	var block = block_scene.instantiate()
	block.position = Vector2(randf_range(40, 600), -30)
	add_child(block)

func _on_score_timer_timeout():
	score += 1
	$HUD/Score.text = "Score: %d" % score

func _on_player_hurt():
	lives -= 1
	$HUD/Lives.text = "Lives: %d" % lives
	if lives == 0:
		$HUD/GameOver.visible = true
		get_tree().paused = true
quiz iconבחנו את עצמכם

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

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

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