jueves, 28 de agosto de 2025

Promocionando mi trabajo actual lo ultimo de lo ultimo, aunque no esta terminado ni mucho menos, pero me publicito con humildad;


 El video es una presentación de un juego de piratas en desarrollo, creado por ti. En él, ofreces un tutorial detallado de las características del juego.

Según el video, el objetivo principal es navegar un barco pirata, destruir enemigos y resolver acertijos para poder acceder a una habitación misteriosa que te llevará a ganar el juego [06:25].

También describes las mecánicas de juego, incluyendo:

Cómo controlar al pirata y sus ataques [04:43].

Cómo usar el cañón para destruir a los enemigos, como los tiburones [03:33], e incluso a un pirata en un mástil [11:46].

Cómo manejar la cámara para ver desde diferentes ángulos, incluso bajo el agua [02:34].

Algo importante que mencionas es que el juego todavía está en desarrollo [12:21] y que, si lo publicas en Itch.io, tendría que ser un juego para todas las audiencias para cumplir con las políticas de la plataforma [14:19].



martes, 26 de agosto de 2025

instanciando un RigidBody3D con gravedad que cae a los 3 segundos; automaticamente cada 3 segundos;

 extends Area3D


# Carga la escena de la bola para poder instanciarla.

var bola_proyectada_scene = preload("res://PIRATAENCUBETA/PROLLECTILES DE PIRATA EN CUBIERTA/RIGBODIQUECAEarea_3dBOLAPROYECTADA.tscn")


# Variable para contar el tiempo restante para la próxima instancia.

var tiempo_restante: float = 3.0


func _process(delta: float) -> void:

# Resta el tiempo transcurrido (delta) al contador.

tiempo_restante -= delta

# Comprueba si el tiempo ha llegado a cero o menos.

if tiempo_restante <= 0.0:

# Llama a la función para instanciar la bola.

instanciar_bola()

# Reinicia el contador para que el ciclo se repita cada 3 segundos.

tiempo_restante = 3.0


func instanciar_bola() -> void:

# 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)

viernes, 22 de agosto de 2025

Cambiar resolucion de pantalla en los juegos de godot 4.4;

extends MultiMeshInstance3D



# Definimos las tres resoluciones.

var resolucion_1: Vector2i = Vector2i(1920, 1080)

var resolucion_2: Vector2i = Vector2i(1280, 720) # He corregido el 12800 a 1280.

var resolucion_3: Vector2i = Vector2i(800, 600)


func _input(event: InputEvent) -> void:

# Si presionas RESOLUCION1, cambia a 1920x1080

if event.is_action_pressed("RESOLUCION1"):

DisplayServer.window_set_size(resolucion_1)

# Opcional: para que se vea en ventana y no en pantalla completa

DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)


# Si presionas RESOLUCION2, cambia a 1280x720

if event.is_action_pressed("RESOLUCION2"):

DisplayServer.window_set_size(resolucion_2)

DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)


# Si presionas RESOLUCION3, cambia a 800x600

if event.is_action_pressed("RESOLUCION3"):

DisplayServer.window_set_size(resolucion_3)

DisplayServer.window_set_mode(DisplayServer.WINDOW_MODE_WINDOWED)



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

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

Explicacion: este GDScript cambia la resolucion de pantallas en 3 tamaños, tecla -1- con mapa de entrada llamado "RESOLUCION1" tecla-2- "RESOLUCION2" tecla -3- "RESOLUCION3" resoluciones de  1920x1080  de  1280x720  de  800x600.

miércoles, 20 de agosto de 2025

¡¡Trabajo duro!!;

 Esa es una descripción muy precisa del "trabajo duro" en el desarrollo de videojuegos y en la programación. No es un cansancio físico, sino un agotamiento mental que se deriva de la concentración y la repetición.

Tienes toda la razón, es un trabajo mentalmente agotador:

  • Concentración Intensa: Estar horas concentrado en una pantalla, resolviendo problemas y buscando el origen de los errores, consume muchísima energía mental. Es un tipo de esfuerzo que el cerebro no está acostumbrado a sostener por períodos largos.

  • Tareas Repetitivas y Paciencia: Afinar pequeños detalles, hacer ajustes mínimos en los valores de un script, o simplemente probar y volver a probar algo una y otra vez requiere una paciencia y una disciplina que no todo el mundo tiene.

  • La Lucha contra lo invisible: Con las tareas físicas, ves el progreso: la pared se construye, la zanja se excava. En la programación, a veces trabajas durante horas y no ves un cambio visible hasta que finalmente encuentras ese pequeño error que lo arregla todo.

Ese tipo de trabajo es el que diferencia a un aficionado de un profesional. Esa constancia y esa capacidad para seguir adelante a pesar de la frustración mental es lo que al final se traduce en un producto de calidad. Es un tipo de "músculo" que se entrena con la práctica y la disciplina.

Giros locos de un pez muerto y luego se borra pasados unos segundos;

 extends Node3D


# Velocidad máxima de rotación en radianes por segundo.

# Puedes ajustar este valor en el Inspector para controlar la "locura".

@export var max_rotation_speed: float = 10.0


func _process(delta: float) -> void:

# Genera un valor de rotación aleatorio para cada eje en cada fotograma

var random_x_rotation = (randf() * 2 - 1) * max_rotation_speed

var random_y_rotation = (randf() * 2 - 1) * max_rotation_speed

var random_z_rotation = (randf() * 2 - 1) * max_rotation_speed

# Rota el nodo en los tres ejes usando los valores aleatorios

# 'delta' asegura que la rotación sea suave e independiente de los FPS

rotate_x(random_x_rotation * delta)

rotate_y(random_y_rotation * delta)

rotate_z(random_z_rotation * delta)




func _ready():

# get_tree().create_timer(3.0) crea un temporizador de 3 segundos.

# .timeout.connect(queue_free) conecta la señal 'timeout' del temporizador

# con el método 'queue_free()' de este mismo nodo.

# queue_free() borra el nodo de forma segura.

get_tree().create_timer(4.8).timeout.connect(queue_free)

Instancia 4 elementos funciona en godot 4.4;

 extends Area3D


var Esferauno = preload("res://BARCO ELEMENTOS TEXTURAS/CAÑONES/TIBURON REVENTAO-3-.tscn")

var Esferauno1 = preload("res://BARCO ELEMENTOS TEXTURAS/CAÑONES/TIBURON REVENTAO-3-.tscn")

var Esferauno2 = preload("res://BARCO ELEMENTOS TEXTURAS/AGUA/mesh_instance_3d_salpicadurasDEL TIBURON MUERTO.tscn")

var Esferauno3 = preload("res://BARCO ELEMENTOS TEXTURAS/TIBURON/ACUARIUM/TIBURON/TIBURONSERETUERCEMUERTO-.tscn")




func _ready() -> void:

$AnimationPlayer.play("TIBURONDESDEAREAMUEVO")

pass


func _process(delta: float) -> void:

pass


func _on_area_entered(area: Area3D) -> void:

var parent = get_parent() # Obtiene una referencia al nodo padre


if parent and parent is CharacterBody3D:

var parent_global_transform = parent.global_transform # Guarda la transformación global del padre


# Instancia la escena de "POLICIA NOKEADO"

var policia_nokeado_instancia = Esferauno.instantiate()

get_tree().root.add_child(policia_nokeado_instancia) # Añade la instancia a la raíz del árbol de escena

policia_nokeado_instancia.global_transform = parent_global_transform # Establece su posición a la del padre borrado


parent.queue_free() # Borra el nodo padre (CharacterBody3D)


var collision_shape_cubo = parent.get_node_or_null("CollisionShape3D")

if collision_shape_cubo:

collision_shape_cubo.queue_free()


get_node("CollisionShape3D").queue_free()


# Si deseas que esta Area3D también se borre, descomenta la siguiente línea

# queue_free()


pass


func _on_area_exited(area: Area3D) -> void:

# Ahora, Esferauno (POLICIA NOKEADO) ya no se instanciará aquí.

# Si Esferauno1 (DIENTES Y SANGRE) debe seguir apareciendo al salir, déjalo aquí.

var Esferauno1_instancia = Esferauno1.instantiate()

add_child(Esferauno1_instancia) # Puedes decidir si quieres que esto sea hijo de esta Area3D o de la raíz.


var Esferauno2_instancia = Esferauno2.instantiate()

add_child(Esferauno2_instancia) # Puedes decidir si quieres que esto sea hijo de esta Area3D o de la raíz.


var Esferauno3_instancia = Esferauno3.instantiate()

add_child(Esferauno3_instancia) # Puedes decidir si quieres que esto sea hijo de esta Area3D o de la raíz.



pass

Giros locos en ejes -y-z-x alternando y a lo loco; simulara un pez cazado;

 extends Node3D


# Velocidad máxima de rotación en radianes por segundo.

# Puedes ajustar este valor en el Inspector para controlar la "locura".

@export var max_rotation_speed: float = 10.0


func _process(delta: float) -> void:

# Genera un valor de rotación aleatorio para cada eje en cada fotograma

var random_x_rotation = (randf() * 2 - 1) * max_rotation_speed

var random_y_rotation = (randf() * 2 - 1) * max_rotation_speed

var random_z_rotation = (randf() * 2 - 1) * max_rotation_speed

# Rota el nodo en los tres ejes usando los valores aleatorios

# 'delta' asegura que la rotación sea suave e independiente de los FPS

rotate_x(random_x_rotation * delta)

rotate_y(random_y_rotation * delta)

rotate_z(random_z_rotation * delta)