Tembak Batu
Termasuk bagian Proyek dalam perjalanan Godot di Coddy. Pelajaran 15 dari 33.
Batu adalah Area2D dan peluru adalah body, jadi body_entered memberi tahu batu saat peluru mengenainya. Setiap peluru berada dalam grup bullets.
func _on_body_entered(body):
if body.is_in_group("bullets"):
body.queue_free()
burst()
queue_free()Hapus pelurunya juga. Jika tidak, peluru itu akan terus melaju dan menghancurkan batu di belakangnya. burst() sudah ada di rock.gd. Fungsi itu mengeluarkan kepulan debu di tempat batu tadi berada. Panggil fungsi itu sebelum queue_free().
Tantangan
SedangDi rock.gd, hubungkan body_entered di _ready. Saat body dalam grup bullets menyentuh rock, hapus bullet, panggil burst(), lalu hapus rock.
Coba sendiri
extends Area2D
var velocity = Vector2.ZERO
func _physics_process(delta):
position += velocity * delta
rotation += 0.5 * delta
if position.x < -30:
position.x += 700
if position.x > 670:
position.x -= 700
if position.y < -30:
position.y += 420
if position.y > 390:
position.y -= 420
# Bursts into dust where the rock is. Call it when the rock breaks.
func burst():
var dust = CPUParticles2D.new()
dust.position = position
dust.one_shot = true
dust.explosiveness = 1.0
dust.amount = 20
dust.lifetime = 0.7
dust.spread = 180.0
dust.gravity = Vector2.ZERO
dust.initial_velocity_min = 30.0
dust.initial_velocity_max = 120.0 * scale.x
dust.scale_amount_min = 2.0
dust.scale_amount_max = 5.0
dust.color = Color(0.75, 0.82, 0.95)
dust.finished.connect(dust.queue_free)
get_parent().add_child(dust)
dust.emitting = 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