Mostrando entradas con la etiqueta Instancia y noquea por desgaste lentamente para Godot 4.4. en GDScript;. Mostrar todas las entradas
Mostrando entradas con la etiqueta Instancia y noquea por desgaste lentamente para Godot 4.4. en GDScript;. Mostrar todas las entradas

martes, 8 de julio de 2025

Instancia y noquea por desgaste lentamente para Godot 4.4. en GDScript;

 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