extends Node2D export var color: Color export var width: float = 1.5 export var segments: int export var segment_length: float export var angle_min: float export var angle_max: float export var branch_chance: float export var fade_time: float func _ready() -> void: var tween = create_tween() tween.tween_property(self, "modulate:a", 0.0, fade_time).set_trans(Tween.TRANS_EXPO) tween.tween_callback(self, "queue_free") func _draw() -> void: var pos := Vector2.ZERO var dir := Vector2.DOWN * segment_length var offset = randi() % 2 for i in range(offset, segments + offset): var angle = rand_range(angle_min, angle_max) if i % 2 == 0: angle *= -1.0 dir = dir.rotated(deg2rad(angle)) var new_pos = pos + dir draw_line(pos, new_pos, color, width, false) if randf() <= branch_chance: dir = dir.rotated(deg2rad(angle) * -2.0) draw_line(pos, pos + dir, color, width, false) pos = new_pos