Desarrollo creacion videojuegos.Godot, Unity, Blender,Gimp,Game Maker,
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.
domingo, 5 de julio de 2026
JUEGA ¡¡YA!!;
sábado, 4 de julio de 2026
GDScript de borrar Area3d y manipular label;
extends Area3D
@export_category("Control de Interfaz")
# Arrastra aquí tu nodo HSlider desde el Inspector
@export var slider_control: HSlider
# Arrastra aquí tu nodo Label2 (el del texto grande de victoria)
@export var mensaje_victoria: Label
# Arrastra aquí tu nodo Label3 (el del texto grande de derrota/game over)
@export var mensaje_derrota: Label
@export_category("Eliminar Suelo al Ganar")
# Arrastra aquí el Area3DSuelo desde el árbol de escenas para borrarlo al ganar
@export var area_suelo_a_borrar: Area3D
@export_category("Configuración del Retraso")
# ¿Quieres que el texto tarde un poco en aparecer? Actívalo o desactívalo
@export var usar_retraso: bool = true
# Tiempo de espera en segundos antes de mostrar el cartel de victoria
@export var tiempo_espera_segundos: float = 2.0
@export_category("Movimiento Lateral")
# Velocidad a la que se desplaza con las flechas en el eje Z
@export var velocidad_movimiento: float = 5.0
# Distancia máxima (en metros) que se puede alejar de su centro en Z
@export var distancia_maxima: float = 3.0
# Variable para recordar la posición Z inicial configurada en el editor
var posicion_inicial_z: float = 0.0
func _ready() -> void:
# Guardamos el valor de Z del editor al arrancar
posicion_inicial_z = position.z
# Nos aseguramos de que los textos empiecen OCULTOS al iniciar la partida
if mensaje_victoria:
mensaje_victoria.visible = false
else:
push_warning("¡Aviso! No has arrastrado el Label de victoria al script de la colchoneta.")
if mensaje_derrota:
mensaje_derrota.visible = false
# Conectamos la señal para detectar cuándo entra un cuerpo (el suicida) en el área
body_entered.connect(_on_body_entered)
# Calibramos el HSlider por código
if slider_control:
slider_control.min_value = -distancia_maxima
slider_control.max_value = distancia_maxima
slider_control.step = 0.01
slider_control.value = 0.0
slider_control.value_changed.connect(_on_slider_value_changed)
func _process(delta: float) -> void:
var direccion: float = 0.0
if Input.is_action_pressed("ui_right"):
direccion += 1.0
if Input.is_action_pressed("ui_left"):
direccion -= 1.0
if direccion != 0.0:
position.z += direccion * velocidad_movimiento * delta
position.z = clamp(position.z, posicion_inicial_z - distancia_maxima, posicion_inicial_z + distancia_maxima)
if slider_control:
slider_control.value_changed.disconnect(_on_slider_value_changed)
slider_control.value = position.z - posicion_inicial_z
slider_control.value_changed.connect(_on_slider_value_changed)
func _on_slider_value_changed(nuevo_valor: float) -> void:
position.z = posicion_inicial_z + nuevo_valor
# Esta función se activa SOLA cuando el personaje toca la colchoneta
func _on_body_entered(body: Node3D) -> void:
print("¡Salvado! Ha entrado: ", body.name)
# Si has arrastrado el suelo al Inspector, lo borramos de la memoria INMEDIATAMENTE
if area_suelo_a_borrar:
print("Borrando el Area3DSuelo para evitar la derrota...")
area_suelo_a_borrar.queue_free()
# Aseguramos que el cartel de derrota desaparezca o se mantenga oculto
if mensaje_derrota:
mensaje_derrota.visible = false
# Comprobamos si tenemos activo el retraso en el Inspector
if usar_retraso:
await get_tree().create_timer(tiempo_espera_segundos).timeout
# Se muestra el cartel de victoria
if mensaje_victoria:
mensaje_victoria.visible = true
viernes, 3 de julio de 2026
Deslizar un Area3d con mouse, dedo de la mano y teclas flechas; Godot 4.7; GDScript;
extends Area3D
@export_category("Control de Interfaz")
# Arrastra aquí tu nodo HSlider desde el Inspector
@export var slider_control: HSlider
@export_category("Movimiento Lateral")
# Velocidad a la que se desplaza con las flechas en el eje Z
@export var velocidad_movimiento: float = 5.0
# Distancia máxima (en metros) que se puede alejar de su centro en Z
@export var distancia_maxima: float = 3.0
# Variable para recordar la posición Z inicial configurada en el editor
var posicion_inicial_z: float = 0.0
func _ready() -> void:
# Guardamos el valor de Z del editor al arrancar
posicion_inicial_z = position.z
# Calibramos el HSlider por código para que coincida con tus distancias
if slider_control:
slider_control.min_value = -distancia_maxima
slider_control.max_value = distancia_maxima
slider_control.step = 0.01
slider_control.value = 0.0 # Empieza en el centro
# Conectamos la señal para cuando el usuario arrastre la bolita con el ratón
slider_control.value_changed.connect(_on_slider_value_changed)
else:
push_warning("¡Aviso! No has arrastrado el HSlider al Inspector del Area3D.")
func _process(delta: float) -> void:
var direccion: float = 0.0
# 1. Detectamos las flechas del teclado
if Input.is_action_pressed("ui_right"):
direccion += 1.0
if Input.is_action_pressed("ui_left"):
direccion -= 1.0
# 2. Si el jugador está pulsando las flechas, movemos el objeto
if direccion != 0.0:
position.z += direccion * velocidad_movimiento * delta
# Limitamos el movimiento dentro de los márgenes seguros
position.z = clamp(position.z, posicion_inicial_z - distancia_maxima, posicion_inicial_z + distancia_maxima)
# ¡Sincronización! Actualizamos la posición de la bolita del slider en pantalla
if slider_control:
# Desconectamos temporalmente la señal para evitar un bucle infinito al actualizar el valor
slider_control.value_changed.disconnect(_on_slider_value_changed)
# Calculamos el desvío actual respecto al centro y se lo asignamos al slider
slider_control.value = position.z - posicion_inicial_z
# Volvemos a conectar la señal para el ratón
slider_control.value_changed.connect(_on_slider_value_changed)
# 3. Esta función se ejecuta automáticamente cuando arrastras la bolita con el ratón
func _on_slider_value_changed(nuevo_valor: float) -> void:
# Modificamos la Z del objeto directamente usando el valor del slider
position.z = posicion_inicial_z + nuevo_valor
jueves, 2 de julio de 2026
GDScript para Godot 4.7, produce una animacion y un movimiento de ladeo que se puede manipular desde el inspector;
extends Node3D
@export_category("Rotación Aleatoria")
# ¿Quieres que rote en estos ejes? Actívalo o desactívalo en el Inspector
@export var rotar_en_x: bool = true
@export var rotar_en_y: bool = true
@export var rotar_en_z: bool = true
# Rango de grados máximos que puede girar (ej. entre -45 y 45 grados)
@export var angulo_maximo_grados: float = 45.0
# Cuánto tarda en completarse cada giro aleatorio (en segundos)
@export var tiempo_giro: float = 2.0
func _ready() -> void:
$AnimationPlayer.play("LENGUA")
# Iniciamos el bucle de rotación aleatoria
iniciar_rotacion_aleatoria()
func iniciar_rotacion_aleatoria() -> void:
# Creamos el Tween que controlará la animación fluida
var tween = create_tween()
# Lo configuramos en paralelo para que anime los tres ejes a la vez si es necesario
tween.set_parallel(true)
# Usamos una transición suave para que no dé tirones al cambiar de dirección
tween.set_trans(Tween.TRANS_SINE)
tween.set_ease(Tween.EASE_IN_OUT)
# --- EJE X ---
if rotar_en_x:
var angulo_x = deg_to_rad(randf_range(-angulo_maximo_grados, angulo_maximo_grados))
tween.tween_property(self, "rotation:x", angulo_x, tiempo_giro)
# --- EJE Y ---
if rotar_en_y:
var angulo_y = deg_to_rad(randf_range(-angulo_maximo_grados, angulo_maximo_grados))
tween.tween_property(self, "rotation:y", angulo_y, tiempo_giro)
# --- EJE Z ---
if rotar_en_z:
var angulo_z = deg_to_rad(randf_range(-angulo_maximo_grados, angulo_maximo_grados))
tween.tween_property(self, "rotation:z", angulo_z, tiempo_giro)
# Cuando este grupo de giros termine, volvemos a llamar a la función para generar nuevos ángulos
tween.chain().tween_callback(iniciar_rotacion_aleatoria)
---------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------
Explicacion: GDScript para Godot 4.7, produce una animacion y un movimiento de ladeo que se puede manipular desde el inspector;
sábado, 27 de junio de 2026
Creando un cielo en Godot 4.7; en 3d;
Estas imagenes son para poner un cielo en proyectos 3d para Godot 4.7....es una vase para empezar a aprender, fijarse en las capturas de pantalla y en mi enlace donde hay imagenes de cielo a 360 grados, son perfectas para verse de forma muy real en los juegos 3d...
Paso enlace donde hay cielos descargables tipo CCO, libre sin pagar por usarlo....
https://polyhaven.com/a/sunflowers_puresky
Sunflowers (Pure Sky) HDRI • Poly Haven CC0
License
jueves, 25 de junio de 2026
A si ilumina Godot 4.7;
google analitic integrado aqui en html ultimas lineas
¡Solo un pequeño recordatorio! Si disfrutas lo que creo, puedes apoyarme en https://ko-fi.com/perico415
miércoles, 24 de junio de 2026
GDScripts Godot 4.6.3 de mi juego ROBBERY AND FALL;;
extends Node3D
func _ready() -> void:
$AnimationPlayer.play("Game_engineAction")
pass
func _process(delta: float) -> void:
pass
-----------------------------------------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------
extends Area3D
# Controla el tiempo de espera en segundos desde el Inspector
@export var tiempo_espera: float = 5.0
func _ready() -> void:
# Conectamos la señal de que otra área ha entrado en nuestro espacio
area_entered.connect(_on_area_entered)
func _on_area_entered(other_area: Area3D) -> void:
print("¡Área detectada! Esperando ", tiempo_espera, " segundos antes de borrar...")
# El truco: el código se para aquí y espera los segundos que le hayas dicho
await get_tree().create_timer(tiempo_espera).timeout
print("¡Tiempo cumplido! Borrando objeto.")
# Se borra a sí misma del juego de forma segura
queue_free()