Menu
CoddyTech

Nyawa Breakout

Termasuk bagian Proyek dalam perjalanan Godot di Coddy. Pelajaran 8 dari 33.

Saat paddle gagal memukul bola, bola jatuh keluar dari bagian bawah. Beri pemain tiga nyawa.

Di ball.gd, bola yang berada di bawah y = 380 berarti gagal dipukul. Pancarkan sinyal missed dan sajikan bola lagi di atas paddle.

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

Di main.gd, kurangi jumlah nyawa. Saat jumlahnya nol, tampilkan Permainan Berakhir dan jeda permainan dengan get_tree().paused = true. Paddle dan bola bersifat Dapat Dijeda, jadi keduanya akan membeku. Main bersifat Selalu, jadi tetap berjalan dan bisa membaca Enter:

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

Batalkan jeda sebelum memuat ulang. Jeda berlaku untuk tree, bukan scene, jadi scene yang dimuat ulang akan mulai dalam keadaan beku.

challenge icon

Tantangan

Sulit
  1. Di ball.gd, tambahkan signal missed. Saat position.y lebih dari 380, pancarkan sinyal tersebut dan kembalikan bola ke (320, 290) dengan kecepatan (110, -280).
  2. Di main.gd, mulai dengan var lives = 3 dan tampilkan Lives: 3 di $HUD/Lives. Setiap kali bola terlewat, satu nyawa berkurang dan label diperbarui.
  3. Saat nyawa tersisa 0, tampilkan Game Over di $HUD/Message dan jeda permainan.
  4. Saat dijeda, tombol Enter (tombol action) membatalkan jeda dan memuat ulang scene.

Coba sendiri

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 iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Proyek

Latihan sendiri: Playground Godot