fuzzyworld

godot-shooter / files / effects / Trails.gd

Trails.gd

740 B · history · blame

1extends Node2D
2class_name Trails
3
4export var trails_length = 400
5export var gradient: Gradient
6export var alpha = 1.0
7onready var trails = $CanvasLayer/Trails
8
9func _ready() -> void:
10 trails.gradient = gradient
11 trails.points = PoolVector2Array([])
12
13func _process(_delta: float) -> void:
14 trails.modulate = Color(1,1,1,alpha)
15
16func add_position(pos: Vector2) -> void:
17 var points = trails.points
18 var should_add = points.size() == 0
19 if points.size() > 0:
20 var last_added = points[-1]
21 var dist_to_last_added = pos.distance_to(last_added)
22 should_add = dist_to_last_added > 1
23 if should_add:
24 points.append(pos)
25 while points.size() > trails_length:
26 points.remove(0)
27 trails.points = points
28
29func clear() -> void:
30 trails.points = []