Tabrak dan Mulai Ulang
Termasuk bagian Proyek dalam perjalanan Godot di Coddy. Pelajaran 18 dari 33.
Kapal terbang melewati bebatuan. Batu yang menyentuh kapal harus mengakhiri permainan. Di rock.gd, pada _on_body_entered, kapal adalah body yang bernama Ship. Batu mengirimkan sinyal hit_ship. main.gd menghubungkannya di spawn_rock dan mengakhiri permainan:
func _on_hit_ship():
$HUD/Message.text = "Game Over"
$Ship.hide()
$Boom.position = $Ship.position
$Boom.emitting = true
get_tree().paused = trueBoom adalah CPUParticles2D sekali pakai. Atur emitting ke true dan efeknya akan muncul sekali. Boom adalah child dari Main, yang selalu aktif, jadi efeknya tetap berjalan saat permainan dijeda.
Terakhir, buat Enter memulai permainan baru saat permainan dijeda, seperti di Breakout: batalkan jeda, lalu jalankan reload_current_scene(). Cara ini juga berfungsi setelah menang.
Tantangan
Sedang- Di
rock.gd, tambahkansignal hit_shipdan emit sinyal itu saat body adalahShip. - Di
main.gd, hubungkan sinyal itu dispawn_rockke_on_hit_ship. Fungsi ini menampilkanGame Over, menyembunyikan kapal, memunculkan ledakan$Boomdi tempat kapal berada, lalu menjeda game. - Saat dijeda, tekan Enter untuk melanjutkan game dan memuat ulang scene.
Coba sendiri
extends Node2D
const ROCK = preload("res://rock.tscn")
var score = 0
var rocks_left = 4
func _ready():
for i in 4:
spawn_rock(Vector2(randf_range(0, 640), 0), Vector2(randf_range(-90, 90), randf_range(40, 90)), 2)
$HUD/Score.text = "Score: 0"
func spawn_rock(where, velocity, size):
var rock = ROCK.instantiate()
rock.position = where
rock.velocity = velocity
rock.size = size
rock.broken.connect(_on_rock_broken)
add_child(rock)
func _on_rock_broken(rock):
if rock.size == 2:
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(0.8) * 1.5, 1)
spawn_rock.call_deferred(rock.position, rock.velocity.rotated(-0.8) * 1.5, 1)
score += 20
rocks_left += 2
else:
score += 50
rocks_left -= 1
$HUD/Score.text = "Score: %d" % score
if rocks_left == 0:
$HUD/Message.text = "You Win!"
get_tree().paused = true
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Proyek
1Proyek: Breakout
Pemukul BreakoutJaga Pemukul Tetap di Layar4Proyek: Penjelajah Ruang Bawah Tanah
Jelajahi Ruang Bawah TanahAmbil Kunci2Proyek: Penembak Asteroid
Putar PesawatNyalakan MesinLatihan sendiri: Playground Godot