martes, 9 de junio de 2026

Instanciar un objeto con GDScript para Godot 4.6.3; y desistanciarlo;

 extends Area3D


# 1. Al usar @export, la escena aparecerá en el Inspector a la derecha.

# Podrás arrastrar el archivo .tscn que quieras meter desde tu Sistema de Archivos.

@export var escena_a_instanciar: PackedScene


# 2. Variable para recordar el elemento que hemos creado y poder borrarlo luego

var elemento_actual: Node = null


# SEÑAL 1: Al entrar en el área, fabricamos el elemento

func _on_area_entered(area: Area3D) -> void:

# Comprobamos si has arrastrado alguna escena en el Inspector

if escena_a_instanciar == null:

print("⚠️ ¡Aviso! No has arrastrado ninguna escena en el Inspector de este Area3D")

return

# ¡Instanciamos el elemento en la memoria!

elemento_actual = escena_a_instanciar.instantiate()

# Lo añadimos al mapa

get_parent().add_child(elemento_actual)

# Lo colocamos en la posición exacta de este Area3D

if elemento_actual is Node3D:

elemento_actual.global_position = self.global_position


# SEÑAL 2: Al salir del área, lo borramos de golpe

func _on_area_exited(area: Area3D) -> void:

# Si el elemento existe en el juego, le metemos el tijeretazo

if is_instance_valid(elemento_actual):

elemento_actual.queue_free()  # Lo elimina por completo de la pantalla y la memoria

elemento_actual = null        # Vaciamos la variable para el siguiente toque



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

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

Explicacion. : Este GDScript sirve para que un Area3d con su colisionador, al toparse con otro Area3d y otro colisionador instancie un elemento en escena en este caso un baston, al retirarse desaparece el baston.....lo bueno de este GDscript esque puedes arrastrar al inpector el elemento que quieras se instancie....una  tscn  una escena.....@export var escena_a_instanciar: PackedScene





GDScript para Godot 4.6.3; manejo de un Node3d; Personaje se mueve por pantalla; flechas del teclado y teclas -m-n;

 extends Node3D


# Velocidad a la que se moverá el objeto (puedes cambiarla desde el Inspector)

@export var velocidad: float = 5.0


func _process(delta: float) -> void:

# 1. Creamos un vector para almacenar la dirección del movimiento

var direccion: Vector3 = Vector3.ZERO

# 2. Detectamos si se presionan las flechas del teclado (Movimiento horizontal)

if Input.is_key_pressed(KEY_UP):

direccion.z -= 1.0  # Mueve hacia adelante

if Input.is_key_pressed(KEY_DOWN):

direccion.z += 1.0  # Mueve hacia atrás

if Input.is_key_pressed(KEY_LEFT):

direccion.x -= 1.0  # Mueve hacia la izquierda

if Input.is_key_pressed(KEY_RIGHT):

direccion.x += 1.0  # Mueve hacia la derecha


# 3. NUEVAS TECLAS: Control de altura en el eje Y

if Input.is_key_pressed(KEY_N):

direccion.y += 1.0  # Asciende (Sube)

if Input.is_key_pressed(KEY_M):

direccion.y -= 1.0  # Desciende (Baja)


# 4. Si se está pulsando alguna tecla, movemos el objeto

if direccion != Vector3.ZERO:

# Normalizamos el vector para que no vaya más rápido al moverse en diagonal

direccion = direccion.normalized()

# Aplicamos el movimiento teniendo en cuenta la velocidad y el tiempo (delta)

global_translate(direccion * velocidad * delta)


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

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

Explicacion: Un personaje en 3d lo volamos por el escenario,,,, teclas -m-n lo vajan y lo suben por su eje de coordenadas "Y" que va de arriva  abajo, y teclas flechas del teclado del pc, lo mueven por sus cordenadas "z" y "x"  izquierda a derecha adelante atras,   tenemos el detalle del   @export var velocidad: float = 5.0    que sirve para desde el inspector del motor de juegos Godot 4.6.3 variar la velocidad de su movimiento, sin tener que tocar el GDScript





Enlaces a mis juegos; casi todos para adultos;

 https://perico415.itch.io/tasty-baked-carrot

https://perico415.itch.io/a10-y-a30

https://perico415.itch.io/dance-ballerina

https://perico415.itch.io/dos-melones

https://perico415.itch.io/gush-of-pleasure

https://perico415.itch.io/invaded-butt

https://perico415.itch.io/tasty-baked-carrot

https://perico415.itch.io/the-hoop-and-your-butt

https://perico415.itch.io/the-unveiling

https://perico415.itch.io/vestida-desnuda

https://perico415.itch.io/tolon-tolon

https://perico415.itch.io/goza-moza


Te gusta mi trabajo? invitame a un cafe para poder seguir desarrollando...
Do you like my work? Buy me a coffee so I can keep developing it...



Te gusta mi trabajo? invitame a un cafe para poder seguir desarrollando...

https://ko-fi.com/perico415