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.
jueves, 1 de enero de 2026
lunes, 29 de diciembre de 2025
Stealing from the history museum.mejoras dia 29-12-25;
jueves, 25 de diciembre de 2025
Godot 4.5 estudiando nuevo proyecto-11-parte;
https://perico415.itch.io/stealing-from-the-history-museum
miércoles, 24 de diciembre de 2025
GDScript godot 4.5 cambia una escena por tiempo y anima la actual;
extends Node3D
# Variable para llevar la cuenta del tiempo
var tiempo_transcurrido: float = 0.0
func _ready() -> void:
$AnimationPlayer.play("MakeHuman default skeleton|MakeHuman default skeletonAction")
func _process(delta: float) -> void:
# Sumamos el tiempo de cada frame a nuestro contador
tiempo_transcurrido += delta
# Si el contador llega a 4 segundos, cambiamos de escena
if tiempo_transcurrido >= 4.0:
get_tree().change_scene_to_file("res://LADRON/LADRONMUERTE/ladron_yo_animo_dia_24_12_27_cala_bera.tscn")
# Verificamos si se presiona la tecla Escape para salir
if Input.is_key_pressed(KEY_ESCAPE):
get_tree().quit()
---------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------------
Explicacion: GDScript que anima continuamente un personaje y al transcurrir unos segundos cambia la escena, tambien se puede salir del juego presionando escape ESC
domingo, 21 de diciembre de 2025
Godot 4.5 estudiando nuevo proyecto-10-parte;
sábado, 20 de diciembre de 2025
Godot 4.5 estudiando nuevo proyecto-9-parte; juego del museo estudiando publicar en Steam;
miércoles, 17 de diciembre de 2025
BORRAR AREA3D DE GODOT EN 5 SEGUNDOS CON GDSCRIPT;
extends Area3D
func _ready() -> void:
# Espera 5 segundos y luego ejecuta queue_free()
get_tree().create_timer(5.0).timeout.connect(queue_free)
domingo, 14 de diciembre de 2025
Stealing from the history museum. 14-12-25;
GDScript instanciando por entrar en una area3d , con retraso de 6 segundos;
extends Area3D
# Carga la escena de la bola para poder instanciarla.
var bola_proyectada_scene = preload("res://EL DEL CUADRO QUE GRITA/character_body_3d_enemigo_cubo7-12-25.tscn")
# 0: Esperando colisión inicial
# 1: Colisión detectada, contando tiempo
# 2: Instanciación completada
var estado_instanciacion: int = 0
# Contador de tiempo, para acumular los segundos.
var tiempo_acumulado: float = 0.0
# Constante que define el retardo deseado: ¡AHORA 6 SEGUNDOS!
const TIEMPO_ESPERA: float = 6.0
# Esta función se llama automáticamente cuando otro Area3D entra en este Area3D.
# (Debes haber conectado la señal 'area_entered').
func _on_area_entered(area: Area3D) -> void:
# 1. Comprobar que el retardo no se haya iniciado ya.
if estado_instanciacion == 0:
print("Área tocada. Iniciando cuenta atrás de ", TIEMPO_ESPERA, " segundos para instanciar bola...")
estado_instanciacion = 1 # Cambiamos el estado para empezar a contar.
# 2. OPCIONAL: Comprobar si el Area que ha entrado es un área específica.
# if area.name != "Area_del_jugador":
# return
# Esta función se llama en cada frame del juego.
func _process(delta: float) -> void:
# Comprobar si estamos en el estado de conteo (1).
if estado_instanciacion == 1:
# Acumular el tiempo transcurrido desde el último frame.
tiempo_acumulado += delta
# Comprobar si se ha alcanzado el tiempo de espera (6.0 segundos).
if tiempo_acumulado >= TIEMPO_ESPERA:
# ¡Tiempo cumplido! Instanciar y cambiar el estado.
instanciar_bola()
estado_instanciacion = 2 # Marcamos como completado.
# Detenemos el _process, ya que la tarea ha terminado.
set_process(false)
func instanciar_bola() -> void:
print("¡6 segundos cumplidos! Instanciando bola proyectada.")
# Instancia la escena pre-cargada.
var nueva_bola = bola_proyectada_scene.instantiate()
# Asigna la posición de la nueva instancia a la del nodo actual.
nueva_bola.global_position = self.global_position
# Añade la instancia como hijo del nodo padre.
get_parent().add_child(nueva_bola)
# --- FIN DEL SCRIPT ---
sábado, 13 de diciembre de 2025
Nueva compilacion para windows y linux, La imitacion de Monalisa se sale¡¡¡¡ esta que se sale¡¡¡¡;
Nueva compilacion para windows y linux, La imitacion de Monalisa se sale¡¡¡¡ esta que se sale¡¡¡¡ Creo ire poniendo por fechas todo lo nuevo, asi los jugadores tendran un orden logico de las mejoras y ampliaciones que boy a ir añadiendo......
New build for Windows and Linux! The Mona Lisa imitation is amazing! It's fantastic! I think I'll be posting all the new features by date, so players will have a logical order of the improvements and expansions I'll be adding...
lunes, 8 de diciembre de 2025
Stealing from the history museum.;
jueves, 4 de diciembre de 2025
Desarrollando juego del museo; 4-12-25;
https://perico415.itch.io/stealing-from-the-history-museum
domingo, 30 de noviembre de 2025
Demo del juego del robo que boy a trabajar durante un año!;
viernes, 28 de noviembre de 2025
Godot 4.5 estudiando nuevo proyecto-3-parte; video de yutube, comento;
martes, 25 de noviembre de 2025
black-friday itch.io;
domingo, 23 de noviembre de 2025
Godot 4.5 estudiando nuevo proyecto-2-parte;
Estoy con nuevo proyecto realizándolo con Godot 4.5, este es muy ambicioso porque quiero publicar mi primer juego en Steam, y no lo voy a realizar en 2 meses, creo me atreveré a publicarlo de aquí 6 meses a 1 año, e comprado un mouse mas preciso para trabajar el juego, de estos de Gamer y bueno se nota la diferencia, mas precisión y mas seguridad manejando con el.
En el juego utilizo muchísimo la cámara, permitiendo infinidad de ángulos y de distancias, el jugador tendrá todas sus preferencias cubiertas en ese aspecto.
En este video estoy empezando a trabajar el juego y probando el mouse.
El argumento trata sobre un robo en un museo.
Las animaciones las descargo y las combino lo mejor que se alludandome de la IA y sus gdscripts para hacer funcionar al personaje.
La ambientación sera toda de oscuridad y de misterio, una iluminación estilo series de televisión CSI, al menos en eso me inspiro.
Iré publicando avances en yutube y en mi blog, ahora no tengo ninguna prisa, antes hacia un juego cada mes o dos meses y los publicaba en Itch.io, con temas de erotismo, porque algún dólar caía por ventas y hacia ilusión ganar algo, pero con la censura actual eso se a echo imposible, así que voy a ir en plan de autentico profesional, y voy hacer un juego que publicare en Steam y del cual pienso recuperar los 100$ que cuesta publicar alli mas las ganancias, otros 100$ me atrevo a asegurar que conseguire ganar.
Y estoy completamente seguro que lo voy a conseguir, jamas podre vivir de esto, pero algun pellizco, o trozo del pastel si que lo boy a sacar.
Es mas el goze de tener una ilusion, una aficion, algo que me llena y me desconecta de la monotonia de mi abitual trabajo del que si me gano el pan.
domingo, 16 de noviembre de 2025
GDSCRIPT SOLO DISPARA DE 1 EN 1 AL EMPEZAR A PRESIONAR TECLA; GODOT 4.5;
extends Area3D
var Bullet = preload("res://PROTAGONISTA/area_3dPROLLECTIL RIFLE.tscn")
# --- Variables de control para el cooldown ---
var right_mouse_fire_cooldown: float = 0.4
var can_fire_right_mouse: bool = true
# --- Nodos Timer ---
var right_mouse_timer: Timer
# --- Referencia al nodo del modelo 3D (para la rotación) ---
var player_mesh: MeshInstance3D
func _ready() -> void:
# --- Inicialización del temporizador para el Botón Derecho ---
right_mouse_timer = Timer.new()
add_child(right_mouse_timer)
right_mouse_timer.wait_time = right_mouse_fire_cooldown
right_mouse_timer.one_shot = true
# Al terminar el tiempo, volvemos a permitir el disparo
right_mouse_timer.timeout.connect(func(): can_fire_right_mouse = true)
# --- OBTENER REFERENCIA al nodo MeshInstance3D ---
player_mesh = get_node("MeshInstance3D")
func _input(event: InputEvent) -> void:
if event is InputEventMouseButton:
# 🎯 CAMBIO CLAVE: Disparo al EMPEZAR a presionar 🔫
# Verificamos si es el botón derecho Y SI ESTÁ presionado (event.is_pressed())
if event.button_index == MOUSE_BUTTON_RIGHT and event.is_pressed():
if can_fire_right_mouse:
can_fire_right_mouse = false
instantiate_bullet()
right_mouse_timer.start()
# NOTA: La liberación del botón ahora no hace nada porque no hay código que la compruebe.
func _process(delta: float) -> void:
# --- LÓGICA de rotación (Se mantiene aquí) ---
if player_mesh:
if Input.is_key_pressed(KEY_Z):
player_mesh.rotate_object_local(Vector3.FORWARD, 1.0 * delta)
if Input.is_key_pressed(KEY_X):
player_mesh.rotate_object_local(Vector3.FORWARD, -1.0 * delta)
# --- Función unificada para instanciar la bala ---
func instantiate_bullet() -> void:
var bullet = Bullet.instantiate()
add_child(bullet)
GDScript para proyectil continuo;; Godot 4.5;
extends Area3D
var speed: float = 31.0 # Velocidad de la bala (Unidades por segundo)
var tiempo_transcurrido: float = 0.0 # Tiempo en segundos
# El tiempo de vida de la bala es de 80.8 segundos (mucho, pero lo mantenemos por tu configuración)
const LIFESPAN: float = 80.8
func _ready() -> void:
# La bala ya debe estar orientada en la dirección de disparo
pass
func _process(delta: float) -> void:
# 1. ACTUALIZAR EL TIEMPO
tiempo_transcurrido += delta
# 2. MOVER EL PROYECTIL HACIA ADELANTE (Movimiento Recto y Limpio)
# Usamos translate() para mover el proyectil en su eje local Z (hacia adelante).
# Como no hay ninguna rotación aplicada, mantendrá el rumbo recto.
translate(Vector3(0, 0, speed * delta))
# 3. CONDICIÓN DE DESTRUCCIÓN
if tiempo_transcurrido >= LIFESPAN:
queue_free()
# --- PARTES ELIMINADAS ---
# Se ha eliminado todo el código de 'desired_sweep_angle', 'sin', y 'rotation = current_rotation'
# que causaba el movimiento de barrido lateral.
.gif)