extends Area2D @onready var bullet: PackedScene = load("res://scenes/player_weapons/weapon_stock.tscn") @onready var shot_data: = load("res://resources/player_weapon_resources/weapon_shot_stock.tres") # Time offset when this bullet was fired (relative to other bullets in the same shot) var time_offset: float = 0.5 # When this bullet should fire (absolute time) var fire_time: float = 0.0 # Track if this bullet is currently active in the shot var is_active: bool = false # Angle at which this bullet should fire (in degrees) var angle: float = 0.0 func _process(delta): var current_time = Time.get_ticks_msec() / 1000.0 # Fire if it's time and bullet isn't already active if !is_active and current_time >= fire_time: activate() # Calculate the movement vector based on speed, angle, and delta var angle_rad = deg_to_rad(angle) var move_x = cos(angle_rad) * shot_data.speed * delta var move_y = sin(angle_rad) * shot_data.speed * delta # Move the bullet position.x += move_x position.y += move_y func activate(): is_active = true visible = true # Emit signal for hit detection (optional) # emit_signal("activate") func _on_visible_on_screen_notifier_2d_screen_exited(): queue_free() # Set fire_time for the next shot (staggered firing) var current_time = Time.get_ticks_msec() / 1000.0 fire_time = current_time + shot_data.stagger_offset