https://perico415.itch.io/stealing-from-the-history-museum/devlog/1480578/light-and-darkness
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 abril de 2026
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.