extends Area3D
var score = 30
@onready var mesh_instance_3d = $"MeshInstance3D CORAZON"
@onready var sprite_rojo = $Sprite2D
@onready var label_resta = $Label
@onready var mesh_instance_3d1 = $CorazonEncojo
@onready var AudioStreamPlayer3DGOLPE = $AudioStreamPlayer3DGOLPE
# Pre-carga la escena del personaje abatido.
# ¡IMPORTANTE!: Asegúrate de que esta ruta sea correcta en tu proyecto.
const CHAS_ABATIDO_SCENE = preload("res://POLICIA LIMPIO-3- AMPLIO ANIMACIONES/POLICIA NOKEADO SUSTITUYE AL KIETO.tscn")
func _ready():
actualizar_visualizacion()
func _on_area_entered(area: Area3D) -> void:
$AudioStreamPlayer3DGOLPE.play()
# Evita que el área colisione consigo misma si está configurada así.
if area == self:
return
score -= 1
actualizar_visualizacion()
func actualizar_visualizacion():
label_resta.text = str(score)
var escala = float(score) / 30.0
sprite_rojo.scale = Vector2(escala, escala)
mesh_instance_3d.scale = Vector3(escala, escala, escala)
mesh_instance_3d1.scale = Vector3(escala, escala, escala)
if score <= 0:
# Oculta los componentes visuales del corazón
sprite_rojo.visible = false
mesh_instance_3d.visible = false
mesh_instance_3d1.visible = false
label_resta.visible = false
# Guarda la posición global actual del Area3D antes de eliminarlo
var current_global_transform = global_transform
# Elimina la propia Area3D que contiene este script
queue_free()
print("La Area3D del corazón ha sido eliminada al llegar a 0.")
# Instancia la escena del personaje abatido
if CHAS_ABATIDO_SCENE != null:
var chas_abatido_instance = CHAS_ABATIDO_SCENE.instantiate()
# Asegúrate de que la instancia se creó correctamente
if is_instance_valid(chas_abatido_instance):
# Establece la posición global de la nueva instancia a la del Area3D eliminado
chas_abatido_instance.global_transform = current_global_transform
# Añade la nueva instancia a la escena.
# Lo ideal es añadirla al mismo padre que tenía el Area3D del corazón.
# Si no hay padre o es inválido, se añade a la raíz del árbol.
get_tree().get_root().add_child(chas_abatido_instance)
print("Instanciado CHASABATIDO-1-.tscn en la posición del corazón eliminado.")
else:
print("ERROR: No se pudo instanciar CHASABATIDO-1-.tscn. La escena podría estar corrupta.")
else:
print("ERROR: CHASABATIDO-1-.tscn no se pudo pre-cargar. Revisa la ruta.")
func _on_timer_timeout() -> void:
pass
func _on_area_exited(area: Area3D) -> void:
pass