godot-shooter / files / effects / Trails.gd
Trails.gd
| 1 | extends Node2D |
| 2 | class_name Trails |
| 3 | |
| 4 | export var trails_length = 400 |
| 5 | export var gradient: Gradient |
| 6 | export var alpha = 1.0 |
| 7 | onready var trails = $CanvasLayer/Trails |
| 8 | |
| 9 | func _ready() -> void: |
| 10 | trails.gradient = gradient |
| 11 | trails.points = PoolVector2Array([]) |
| 12 | |
| 13 | func _process(_delta: float) -> void: |
| 14 | trails.modulate = Color(1,1,1,alpha) |
| 15 | |
| 16 | func 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 | |
| 29 | func clear() -> void: |
| 30 | trails.points = [] |