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)