This repository has been archived on 2024-09-30. You can view files and clone it, but cannot push or open issues/pull-requests.
gbjam12/puzzles/arrow/arrow_shooter.gd

40 lines
974 B
GDScript
Raw Permalink Normal View History

class_name ArrowShooter
extends RayCast2D
@onready var arrow: PackedScene = preload("res://puzzles/arrow/arrow.tscn")
@onready var timer: Timer = $ShootTimer
@onready var shoot_dir: Vector2i = self.target_position.normalized()
@export var arrow_speed: int = 400
@export var shoot_timer: float = 3.0
@export var offset_start_time: float = 0.0
var _default_offset: float = 0.0
var is_stopped = false
var _arrows_shot: Array[Arrow] = []
func _ready():
_default_offset = offset_start_time
func _process(delta):
if is_stopped:
timer.stop()
if offset_start_time > 0:
offset_start_time -= 1
elif offset_start_time <= 0 and timer.is_stopped():
timer.start(shoot_timer)
func _on_shoot_timer_timeout():
var inst: Arrow = arrow.instantiate()
inst.shoot(shoot_dir, arrow_speed)
add_child(inst)
_arrows_shot.push_back(inst)
func reset():
for arrow in _arrows_shot:
if arrow != null:
arrow.queue_free()
offset_start_time = _default_offset
is_stopped = true