34 lines
918 B
GDScript
34 lines
918 B
GDScript
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
|