MIF_E31230535/pelururifle.gd

33 lines
1.1 KiB
GDScript

extends Area2D
@export var speed = 1500.0
var direction = Vector2.RIGHT
func _physics_process(delta):
# Gerak peluru
position += direction * speed * delta
# --- LOGIKA PENGHANCURAN PELURU ---
# Fungsi ini harus disambungkan (connect) ke sinyal body_entered
func _on_body_entered(body):
# 🟦 KUNCI UTAMA: Jika yang tertabrak adalah Player (diri sendiri), abaikan total!
if body is Player:
return
# 1. Cek apakah benda yang ditabrak punya fungsi terima_damage (untuk CharacterBody/StaticBody langsung)
if body.has_method("terima_damage"):
body.terima_damage(5)
# 2. ATAU cek apakah bapaknya punya fungsi kurangi_nyawa (untuk struktur Node2D > StaticBody2D)
elif body.get_parent().has_method("kurangi_nyawa"):
body.get_parent().kurangi_nyawa(2)
# 3. Peluru hancur jika menabrak apapun (karena pengecekan Player sudah di-return di atas)
# Kamu bisa tambah efek suara atau partikel ledakan kecil di sini nanti
queue_free()
# Gunakan ini supaya peluru tidak terbang selamanya di memori
func _on_visible_on_screen_notifier_2d_screen_exited():
queue_free()