Godot, scripts para Godot estudios y aprendizajes, Creacion de videojuegos. Creacion y publicacion de videojuegos en internet. Como hacer videojuegos. C# unity. Animaciones unity blender. Personajes videojuegos graficos dibujos. Diseño grafico. Comic. Animaciones gif. Dibujo de retratos. Realidad virtual. Cine y realidad virtual.
viernes, 13 de junio de 2025
Juego gotico de terror en 3d;
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 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/