Hello my gun just shoot once but idk why

Godot Version

4.4

Question

im making a gun and idk why it only shoots once and no more

extends Node3D

@export var fire_rate := 14.0
@export var recoil := 0.05
@export var weapon_mesh: Node3D
@export var Weapon_damage := 15


@onready var cooldown: Timer = $cooldown
@onready var weapon_position: Vector3 = weapon_mesh.position
@onready var ray_cast_3d: RayCast3D = $RayCast3D

# Called when the node enters the scene tree for the first time.

# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:
	if Input.is_action_pressed("fire"):
		if cooldown.is_stopped():
			shoot()
	
	weapon_mesh.position = weapon_mesh.position.lerp(weapon_position, delta * 10)
	
	
func shoot() -> void:
	cooldown.start(1.0 / fire_rate)
	var collider = ray_cast_3d.get_collider()
	print("fires",collider)
	weapon_mesh.position.z =+ recoil
	if collider is Enemy:
		collider.Hp -= Weapon_damage

Did you make sure to tick the one_shot property on your Timer node ?

1 Like

no, i forgor sorry :sweat_smile:

Haha dont apologize :sweat_smile:
I often get tricked myself thinking oneshot is the default behavior

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.