Menu
CoddyTech

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().

challenge icon

Tantangan

Sedang

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

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

Semua pelajaran di Proyek

Latihan sendiri: Playground Godot