viernes, 13 de junio de 2025

Personaje lo animo y a los 5 segundos lo borro de la escena, GDScript para Godot 4.4;

 extends Node3D


var temporizador: Timer # Creamos una variable para guardar nuestro temporizador


func _ready() -> void:

# Esto se ejecuta cuando el nodo se carga en la escena.

$AnimationPlayer.play("Human_rig|REVIENTA") # Tu animación se sigue reproduciendo.


# Paso 1: Crear el Temporizador

temporizador = Timer.new() # Creamos una nueva instancia de un nodo Timer.

add_child(temporizador) # ¡Importante! Añadimos el temporizador como hijo de este nodo.

# Necesita estar en el árbol de la escena para funcionar.


# Paso 2: Configurar el Temporizador

temporizador.wait_time = 5.0 # Le decimos al temporizador que espere 5 segundos.

temporizador.one_shot = true # Le decimos que solo se active una vez (disparo único).

# Si fuera 'false', se repetiría indefinidamente.


# Paso 3: Conectar la Señal "timeout"

# Cuando el temporizador termine de contar, emitirá una señal llamada "timeout".

# Conectamos esa señal a una función nuestra llamada "_al_terminar_temporizador".

temporizador.connect("timeout", Callable(self, "_al_terminar_temporizador"))


# Paso 4: Iniciar el Temporizador

temporizador.start() # ¡Aquí comienza la cuenta regresiva!


func _al_terminar_temporizador() -> void:

# Esta función se ejecutará automáticamente cuando el temporizador llegue a 0.

queue_free() # Esta es la función mágica: borra el nodo actual de la escena.

# Usamos 'queue_free()' para que se borre de forma segura al final del fotograma.

martes, 10 de junio de 2025

Un proyectil se destruye al chocar con un RigidBody;

 # Script para el Area3D PROYECTIL EN SÍ MISMO (el propio proyectil)


extends Area3D


var score = 0 # No usado directamente para la destrucción, pero se mantiene si lo necesitas para otras lógicas.

var speed = 15 # Velocidad en el eje Z (adelante)

var speed2 = 1 # Velocidad en el eje Y (hacia arriba, si lo deseas)

var tiempo_transcurrido = 0.0 # Controla el tiempo de vida del proyectil

var vida_util_segundos = 6.0 # El proyectil se destruirá después de 6 segundos


func _ready() -> void:

# Conectamos la señal 'body_entered'.

# Se activará cuando este Area3D colisione con cualquier PhysicsBody3D (ej. una pared, el suelo, un enemigo).

connect("body_entered", Callable(self, "_on_body_entered"))

print("Proyectil listo: se moverá, se destruirá por tiempo y al chocar.")


func _process(delta: float) -> void:

# Mover el proyectil

# Vector3(X, Y, Z) - ajusta el orden según la orientación de tu proyectil en 3D

# Aquí, el movimiento es ligeramente hacia arriba (Y) y principalmente hacia adelante (Z)

var movimiento = Vector3(0, speed2 * delta, speed * delta)

translate(movimiento) # Mueve el nodo en su espacio local


# Controlar el tiempo de vida del proyectil

tiempo_transcurrido += delta


if tiempo_transcurrido >= vida_util_segundos:

print("Proyectil ha alcanzado su tiempo de vida. Destruyendo...")

queue_free() # Elimina el proyectil si ha superado su tiempo de vida


func _on_body_entered(body: Node3D):

# Esta función se ejecuta cuando el proyectil colisiona con un PhysicsBody3D.

#print(f"¡Proyectil colisionó con: {body.name}! Destruyendo...")

queue_free() # Elimina el proyectil al impactar con un cuerpo

lunes, 9 de junio de 2025

Complemento a https://videojuegosenlineaasaco4.blogspot.com/2025/06/gdscript-para-colocar-unos-sprite2d-en.html;

 # Area3DVisibilityControl.gd

extends Area3D


@onready var sprite_2d_1 = get_node("../Sprite2D") # Ajusta la ruta si es diferente

@onready var sprite_2d_2 = get_node("../Sprite2D2IMAGEN ENEMIGO FINAL") # Ajusta la ruta si es diferente


# Define cuánto se moverá sprite_2d_1 hacia abajo desde el centro.

# Puedes ajustar este valor. Un número positivo lo mueve hacia abajo.

const OFFSET_Y_SPRITE_1 = 400.0 # Por ejemplo, 400 píxeles hacia abajo

const OFFSET_Y_SPRITE_2 = 300.0 # Por ejemplo, 300 píxeles hacia abajo


# Define cuánto se moverá sprite_2d_1 en el eje X desde el centro.

# Un número positivo lo mueve hacia la derecha, un negativo hacia la izquierda.

const OFFSET_X_SPRITE_1 = -280.0

const OFFSET_X_SPRITE_2 = -280.0






func _ready():

# Conectamos la señal 'area_entered' de este Area3D.

area_entered.connect(_on_area_entered)


func _on_area_entered(area: Area3D):

print("Otro Area3D entró en este Area3D: ", area.name)


# --- Obtener el tamaño del viewport (la ventana del juego) ---

var viewport_size = DisplayServer.window_get_size()


# --- Calcular la posición central de la pantalla ---

var center_x = viewport_size.x / 2.0

var center_y = viewport_size.y / 2.0


# --- Mover el primer Sprite2D un poco por debajo y a la derecha/izquierda del centro ---

# Sumamos OFFSET_X_SPRITE_1 a la posición X central.

# Sumamos OFFSET_Y_SPRITE_1 a la posición Y central.

sprite_2d_1.position = Vector2(center_x + OFFSET_X_SPRITE_1, center_y + OFFSET_Y_SPRITE_1)


# --- Mover el segundo Sprite2D solo en el eje Y (según tu código actual) ---

sprite_2d_2.position = Vector2(center_x + OFFSET_X_SPRITE_2, center_y + OFFSET_Y_SPRITE_2)



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

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

EXPLICACION: Con este GDScript  puedo mover por pantalla variando el valor tanto en eje -y- como en eje -x- se complementa a  https://videojuegosenlineaasaco4.blogspot.com/2025/06/gdscript-para-colocar-unos-sprite2d-en.html

GDScript para colocar unos Sprite2D en la parte vaja de la pantalla del juego al ocurrir una colision;

 # Area3DVisibilityControl.gd

extends Area3D


@onready var sprite_2d_1 = get_node("../Sprite2D") # Ajusta la ruta si es diferente

@onready var sprite_2d_2 = get_node("../Sprite2D2IMAGEN ENEMIGO FINAL") # Ajusta la ruta si es diferente


# Define cuánto se moverá sprite_2d_1 hacia abajo desde el centro.

# Puedes ajustar este valor. Un número positivo lo mueve hacia abajo.

const OFFSET_Y_SPRITE_1 = 400.0 # Por ejemplo, 100 píxeles hacia abajo

const OFFSET_Y_SPRITE_2 = 300.0 # Por ejemplo, 100 píxeles hacia abajoIMBENTADO POR MIIIIIIIIIIIIIIII



func _ready():

# Conectamos la señal 'area_entered' de este Area3D.

area_entered.connect(_on_area_entered)


func _on_area_entered(area: Area3D):

print("Otro Area3D entró en este Area3D: ", area.name)


# --- Obtener el tamaño del viewport (la ventana del juego) ---

var viewport_size = DisplayServer.window_get_size() 


# --- Calcular la posición central de la pantalla ---

var center_x = viewport_size.x / 2.0

var center_y = viewport_size.y / 2.0


# --- Mover el primer Sprite2D un poco por debajo del centro ---

# Sumamos el OFFSET_Y_SPRITE_1 a la posición Y central.

sprite_2d_1.position = Vector2(center_x, center_y + OFFSET_Y_SPRITE_1)

sprite_2d_2.position = Vector2(center_x, center_y + OFFSET_Y_SPRITE_2)########3IMBENTADO POR MIIIIIIIIIIIIIIIIIIII




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

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

EXPLICACION : En mi nuevo videojuego hay una escena en la que el protagonista del juego entra en una habitacion y con este GDScript produzco que aparezcan unos sprites ala vista donde sale la imagen del malvado al que e de destruir y una barra de vida que mengua conforme lo ataco, este GDScript produce que lo situe en pantalla solamente cuando el protagonista del juego entra en la habitacion.........

lunes, 2 de junio de 2025

Ejemplo de manipular geometrias 3d; con el propio Godot 4.4; para construir inmuebles,; recintos,; cuevas;, naves ;, tuneles ;lo que se nos ocurra;

          .(la parte superior izquierda del video esta tapada expresamente porque el videojuego sera para +18 años)



En mi nuevo juego que publicare pronto en itch.io e aprendido a ....manipular geometrias 3d; con el propio Godot 4.4; para construir inmuebles,; recintos,; cuevas;, naves ;, tuneles ;lo que se nos ocurra;

https://perico415.itch.io/

En este video podeis ver un minimo ejemplo de como poner un CSGSphere3D  una bola enorme que cubre a unos personajes esta en estado solido y con colision activada, dentro le puse un cilindro atravesado al cual le puse la opcion de sustraccion....podeis ver como el personaje puede pasar por el hueco realizado y podeis comprobar que el resto del CSGSphere3D  una bola enorme , no la puede atravesar el personaje.......e echo un simple ejemplo ahora acabo de hacerlo mas elaborado no sale en el video pero e conseguido que la bola enorme duplicarla y escalarla algo mas pequeña y hacer la sustraccion, el resultado es una pecera perfecta a la que añadi dos nuevos cilindros de entrada al interior, y queda una estructura perfectamente redondeada y con colision donde interesa....muestro unas capturas de pantalla de lo conseguido......



https://perico415.itch.io/

viernes, 30 de mayo de 2025

Videojuego 3d con visiones y planos de 360 grados con la camara, en desarrollo , pronto a la venta en itch.io a finales de junio principios de julio del 2025;

POR POLITICAS DE YOUTUBE EN EL VIDEO MANTENGO LAS DISTANCIAS DE LA CAMARAY CENSURO ALGUNAS IMAGENES, NO SON IMAGENES DE OTRO MUNDO PERO LA POLITICA DE YOUTUBE ES MUY RESTRICTIBA Y E DE RESPETARLA PARA QUE NO ME BANEEN LA CUENTA, EN ITCH,IO HAY MAS LIBERTAD Y EL QUE QUIERA DISFRUTAR EL JUEGO DEVERA ESPERAR UNAS SEMANAS Y DESCARGARLO DE perico415 - itch.ioVideojuego 3d con visiones y planos de 360 grados con la camara, en desarrollo , pronto a la venta en itch.io a finales de junio principios de julio del 2025.
T-E-R-R-O-R-I-F-I-C-O- + 18 Años https://perico415.itch.io/ perico415 - itch.io https://videojuegosenlineaasaco4.blogspot.com/

Detalles del desarrollo: sobre todo un manejo de la camara y de los planos que tendra el jugador del juego muy muy buenos, vision total del entorno en 360 º , acercar y alejar la camara asta donde quieras y no perder al Player que manejamos en ningun momento, un sonido muy terrorifico y macabro, pronto estara en Itch.io por un modico precio de alrrededor los 2$, es un desarrollo de un par de meses o tres, y es para gente adulta de mas d 18 años, estara completo, con sentido desenlace y final con coherencia en la historia, en mi web de Itch.io podeis descargar juegos completos gratuitos realizados con Godot 4.4 mi motor de juegos favorito.

Tambien los hay de pago, descargad los gratuitos, disfrutarlos y.... los de pago estan mas trabajados....jajajajaja si os llama algo la atencion no estan a precios astronomicos......visitad de todas formas......perico415 - itch.io
 

martes, 27 de mayo de 2025

Uso de un func _on_body_entered(body: Node3D) -> void: para borrar un proyectil cuando colisiona;

 extends Area3D


var score = 0

var speed = 15 # Unidades por segundo

var speed2 = 1 # Unidades por segundo

var tiempo_transcurrido = 0.0 # Tiempo en segundos


func _ready() -> void:

# Conecta la señal 'body_entered' a una función que manejará la colisión

body_entered.connect(_on_body_entered)


func _process(delta: float) -> void:

var movimiento = Vector3(0, speed2 * delta, speed * delta)

translate(movimiento)


tiempo_transcurrido += delta


if tiempo_transcurrido >= 10.0:

queue_free()


# Esta función se llamará cuando un cuerpo entre en esta área

func _on_body_entered(body: Node3D) -> void:

print("¡Colisión detectada con: ", body.name, "!")

queue_free() # Borra el nodo cuando colisiona