35 lines
1.1 KiB
GDScript
35 lines
1.1 KiB
GDScript
extends Area2D
|
|
|
|
# 📣 Sinyal baru untuk memberi tahu Stage kalau item ini baru saja diambil
|
|
signal diambil
|
|
|
|
@export var jumlah_heal: int = 50
|
|
@onready var anim_player: AnimationPlayer = $AnimationPlayer
|
|
@onready var collision: CollisionShape2D = $CollisionShape2D
|
|
|
|
func _ready() -> void:
|
|
if anim_player and anim_player.has_animation("gerak"):
|
|
anim_player.play("gerak")
|
|
|
|
func _on_body_entered(body: Node2D) -> void:
|
|
if body is Player:
|
|
if body.has_method("tambah_hp"):
|
|
body.tambah_hp(jumlah_heal)
|
|
print("✨ Item Heal Up diambil oleh Player!")
|
|
|
|
# PENTING: Picu sinyal diambil agar Stage tahu harus mulai menghitung 20 detik
|
|
emit_signal("diambil")
|
|
|
|
# Sembunyikan item dan matikan collision-nya (Failsafe agar tidak bisa diambil dua kali)
|
|
set_responsif(false)
|
|
|
|
# Fungsi pembantu untuk memunculkan / menyembunyikan item dengan aman
|
|
func set_responsif(status: bool) -> void:
|
|
visible = status
|
|
if collision:
|
|
collision.set_deferred("disabled", !status)
|
|
|
|
# Jalankan kembali animasi jika item dimunculkan lagi
|
|
if status and anim_player and anim_player.has_animation("gerak"):
|
|
anim_player.play("gerak")
|