39 lines
1 KiB
GDScript3
39 lines
1 KiB
GDScript3
|
|
class_name BossReturnSignal
|
||
|
|
extends Node2D
|
||
|
|
|
||
|
|
@export var speed: float = 520.0
|
||
|
|
|
||
|
|
var target: Node2D
|
||
|
|
var trail: PackedVector2Array = PackedVector2Array()
|
||
|
|
|
||
|
|
|
||
|
|
func _ready() -> void:
|
||
|
|
add_to_group("boss_returns")
|
||
|
|
trail.append(global_position)
|
||
|
|
queue_redraw()
|
||
|
|
|
||
|
|
|
||
|
|
func _process(delta: float) -> void:
|
||
|
|
if not is_instance_valid(target):
|
||
|
|
queue_free()
|
||
|
|
return
|
||
|
|
var destination: Vector2 = target.global_position
|
||
|
|
if global_position.distance_to(destination) <= speed * delta:
|
||
|
|
global_position = destination
|
||
|
|
target.open_next_eye()
|
||
|
|
queue_free()
|
||
|
|
return
|
||
|
|
global_position = global_position.move_toward(destination, speed * delta)
|
||
|
|
trail.append(global_position)
|
||
|
|
while trail.size() > 14:
|
||
|
|
trail.remove_at(0)
|
||
|
|
queue_redraw()
|
||
|
|
|
||
|
|
|
||
|
|
func _draw() -> void:
|
||
|
|
for i in range(1, trail.size()):
|
||
|
|
var alpha: float = float(i) / float(trail.size())
|
||
|
|
draw_line(trail[i - 1] - global_position, trail[i] - global_position,
|
||
|
|
Color(1.0, 0.82, 0.22, alpha * 0.7), 3.0 + alpha * 5.0, true)
|
||
|
|
NeonDraw.draw_glowing_circle(self, Vector2.ZERO, 9.0,
|
||
|
|
Color(1.0, 0.82, 0.22), 1.0, Color(0.16, 0.04, 0.01))
|