domingo, 5 de abril de 2026

Stealing from the history museum. » Devlog;

 https://perico415.itch.io/stealing-from-the-history-museum/devlog/1480578/light-and-darkness





Crear fogonazo de disparos en Godot 4.6; uso de @export en el GDScript para calibrar desde el inspector;

 extends Area3D


var Bullet = preload("res://ELEMENTOS QUE EXPLOTAN/HMOPISTOLA.tscn")


# --- CONTROL DESDE EL INSPECTOR ---

# Si pones 0.5, disparará cada medio segundo. 

# Si pones 0.1, ¡será una metralleta!

@export_range(0.05, 2.0, 0.05) var cadencia_disparo: float = 0.5


# --- Variables internas ---

var can_fire_right_mouse: bool = true

var player_mesh: MeshInstance3D


func _ready() -> void:

# Configuramos el temporizador

var timer = Timer.new()

add_child(timer)

timer.wait_time = cadencia_disparo

timer.one_shot = true

# Cuando el tiempo termina, permitimos disparar otra vez

timer.timeout.connect(func(): can_fire_right_mouse = true)

# Guardamos la referencia para usarla en el proceso

self.set_meta("disparo_timer", timer)


func _process(delta: float) -> void:

# --- LÓGICA DE DISPARO AUTOMÁTICO ---

# Comprobamos CADA FRAME si el botón derecho está pulsado

if Input.is_mouse_button_pressed(MOUSE_BUTTON_RIGHT):

if can_fire_right_mouse:

can_fire_right_mouse = false

instantiate_bullet()

# Accedemos al timer y lo arrancamos con el tiempo del @export

var timer = self.get_meta("disparo_timer")

timer.wait_time = cadencia_disparo

timer.start()


# --- LÓGICA de rotación (Se mantiene igual) ---

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)


func instantiate_bullet() -> void:

var bullet = Bullet.instantiate()

add_child(bullet)



Una opcion de sistema de disparos para Godot 4.6; GDScript; y uso de @export desde el GDScript;

 extends Area3D


var Bullet = preload("res://PROTAGONISTA/area_3dPROLLECTIL RIFLE.tscn")


# --- CONTROL DESDE EL INSPECTOR ---

# Si pones 0.5, disparará cada medio segundo. 

# Si pones 0.1, ¡será una metralleta!

@export_range(0.05, 2.0, 0.05) var cadencia_disparo: float = 0.5


# --- Variables internas ---

var can_fire_right_mouse: bool = true

var player_mesh: MeshInstance3D


func _ready() -> void:

# Configuramos el temporizador

var timer = Timer.new()

add_child(timer)

timer.wait_time = cadencia_disparo

timer.one_shot = true

# Cuando el tiempo termina, permitimos disparar otra vez

timer.timeout.connect(func(): can_fire_right_mouse = true)

# Guardamos la referencia para usarla en el proceso

self.set_meta("disparo_timer", timer)


func _process(delta: float) -> void:

# --- LÓGICA DE DISPARO AUTOMÁTICO ---

# Comprobamos CADA FRAME si el botón derecho está pulsado

if Input.is_mouse_button_pressed(MOUSE_BUTTON_RIGHT):

if can_fire_right_mouse:

can_fire_right_mouse = false

instantiate_bullet()

# Accedemos al timer y lo arrancamos con el tiempo del @export

var timer = self.get_meta("disparo_timer")

timer.wait_time = cadencia_disparo

timer.start()


# --- LÓGICA de rotación (Se mantiene igual) ---

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)


func instantiate_bullet() -> void:

var bullet = Bullet.instantiate()

add_child(bullet)






GDScript para Godot 4.6; hace una barra que manipula la cantidad de luz;

 

extends Node


@export var mi_luz : Light3D 

@export var velocidad_teclas : float = 50.0 # Cuánto de rápido sube/baja la luz


# Buscamos al HSlider que es hijo (ajusta la ruta si cambia)

@onready var barra_luz = $CanvasLayer/HSlider 


func _ready() -> void:

# Configuramos la barra al arrancar

if barra_luz and mi_luz:

barra_luz.min_value = 0.0

barra_luz.max_value = 50.0

barra_luz.step = 0.1

barra_luz.value = mi_luz.light_energy


func _process(delta: float) -> void:

if not barra_luz or not mi_luz:

return


# --- CONTROL POR TECLAS ---

# Si pulsas 'P', el valor de la barra sube

if Input.is_key_pressed(KEY_P):

barra_luz.value += velocidad_teclas * delta

# Si pulsas 'O', el valor de la barra baja

if Input.is_key_pressed(KEY_O):

barra_luz.value -= velocidad_teclas * delta


# --- VINCULACIÓN ---

# La luz siempre sigue lo que diga la barra (ya sea por teclas o ratón)

mi_luz.light_energy = barra_luz.value


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

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

Explicacion: Mi juego del museo es un juego oscuro de misterio; hice una barra que desliza presionando teclas -o- y -p- la cantidad de luz ambiente preferidad por el jugador, de alguna manera altera la facilidad o dificultad del juego tambien,-o- oscuro -p- luz, gradualmente, la verdad queda genial, se arrastra desde la escena al inspector el nodo de luz que deseemos alterar., todo ayudandome desde la IA del navegador ; Google Gemini menuda IA, ahora me resulta imprescindible para desarrollar los juegos.