miércoles, 23 de julio de 2025

GDScript para godot4.4 desde un Area3d cullo padre es un CharacterBody3D2 y persigue a un Player, destruye por colision ambos;

 extends Area3D


# Asegúrate de que estas rutas sean EXACTAMENTE correctas.

# Si el nombre del archivo tiene un espacio o un carácter especial, Godot lo necesita así.

var Esferauno = preload("res://POLICIA LIMPIO-3- AMPLIO ANIMACIONES/POLICIA  NOKEADO.tscn") # ¡Revisa esta línea!

var Esferauno1 = preload("res://DIENTES Y SANGRE BOLANDO/area_3d_diente.tscn")


# Called when the node enters the scene tree for the first time.

func _ready() -> void:

pass


# Called every frame. 'delta' is the elapsed time since the previous frame.

func _process(delta: float) -> void:

pass


func _on_area_entered(area: Area3D) -> void:

var parent = get_parent()


if parent and parent is CharacterBody3D:

parent.queue_free()


var collision_shape_cubo = parent.get_node_or_null("CollisionShape3D")

if collision_shape_cubo:

collision_shape_cubo.queue_free()


get_node("CollisionShape3D").queue_free()


# Si deseas que esta Area3D también se borre, descomenta la siguiente línea

# queue_free()


pass


func _on_area_exited(area: Area3D) -> void:

# Asegúrate de que no estás usando 'var' aquí, ya que Esferauno ya está declarado globalmente.

var Esferauno_instancia = Esferauno.instantiate()

add_child(Esferauno_instancia)


var Esferauno1_instancia = Esferauno1.instantiate()

add_child(Esferauno1_instancia)


pass




---------------------------------------------------------------------------------------------------------------------

ESTE DE LA PARTE INFERIOR ES EL PERFECTO INSTANCIA AL ENEMIGO DERRIBADO TAMBIEN Y DESPEJA COMPLETAMENTE DE RESTOS EL ESCENARIO

-----------------------------------------------------------------------------------------------------------------------------

extends Area3D


var Esferauno = preload("res://POLICIA LIMPIO-3- AMPLIO ANIMACIONES/POLICIA  NOKEADO.tscn")

var Esferauno1 = preload("res://DIENTES Y SANGRE BOLANDO/area_3d_diente.tscn")


func _ready() -> void:

pass


func _process(delta: float) -> void:

pass


func _on_area_entered(area: Area3D) -> void:

var parent = get_parent() # Obtiene una referencia al nodo padre


if parent and parent is CharacterBody3D:

var parent_global_transform = parent.global_transform # Guarda la transformación global del padre


# Instancia la escena de "POLICIA NOKEADO"

var policia_nokeado_instancia = Esferauno.instantiate()

get_tree().root.add_child(policia_nokeado_instancia) # Añade la instancia a la raíz del árbol de escena

policia_nokeado_instancia.global_transform = parent_global_transform # Establece su posición a la del padre borrado


parent.queue_free() # Borra el nodo padre (CharacterBody3D)


var collision_shape_cubo = parent.get_node_or_null("CollisionShape3D")

if collision_shape_cubo:

collision_shape_cubo.queue_free()


get_node("CollisionShape3D").queue_free()


# Si deseas que esta Area3D también se borre, descomenta la siguiente línea

# queue_free()


pass


func _on_area_exited(area: Area3D) -> void:

# Ahora, Esferauno (POLICIA NOKEADO) ya no se instanciará aquí.

# Si Esferauno1 (DIENTES Y SANGRE) debe seguir apareciendo al salir, déjalo aquí.

var Esferauno1_instancia = Esferauno1.instantiate()

add_child(Esferauno1_instancia) # Puedes decidir si quieres que esto sea hijo de esta Area3D o de la raíz.


pass