Menu
CoddyTech

Breakout Canları

Coddy'nin Godot Journey'sinin Projeler bölümünün bir parçası. Ders 8 / 33.

Raket topu kaçırdığında top ekranın altından düşer. Oyuncuya üç can verin.

ball.gd içinde, y = 380 değerinin altındaki top kaçırılmış sayılır. missed sinyalini yayınlayın ve topu raketin üstünde yeniden başlatın.

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

main.gd içinde canları geri sayın. Sıfıra ulaştığında Game Over yazısını gösterin ve get_tree().paused = true ile oyunu duraklatın. Raket ve top Pausable olduğundan donar. Main ise Always olduğundan çalışmaya devam eder ve Enter tuşunu algılayabilir:

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

Sahneyi yeniden yüklemeden önce duraklatmayı kaldırın. Duraklatma sahneye değil, ağaca aittir; bu yüzden yeniden yüklenen sahne donmuş halde başlar.

challenge icon

Görev

Zor
  1. ball.gd dosyasında signal missed ekle. position.y 380'in üzerine çıktığında bu sinyali gönder ve topu (320, 290) konumuna, (110, -280) hızıyla geri getir.
  2. main.gd dosyasında var lives = 3 ile başla ve $HUD/Lives içinde Lives: 3 göster. Her kaçırmada bir can azalır ve etiket güncellenir.
  3. Can sayısı 0 olduğunda $HUD/Message içinde Game Over göster ve oyunu duraklat.
  4. Oyun duraklatılmışken Enter (action tuşu) duraklatmayı kaldırır ve sahneyi yeniden yükler.

Kendin dene

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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Projeler bölümündeki tüm dersler

Kendi başına pratik yap: Godot playground