28 lines
715 B
GDScript
28 lines
715 B
GDScript
class_name FadeAwayComponent
|
|
extends Node
|
|
|
|
@export var sprite2d: Sprite2D
|
|
@export var fade_duration: float = 1.0
|
|
@export var speed: float = 10.0
|
|
@export var direction: Vector2 = Vector2.UP
|
|
@export var root: Node2D
|
|
@export var area2d: Area2D
|
|
|
|
|
|
func _ready():
|
|
root = get_parent()
|
|
if area2d:
|
|
area2d.body_entered.connect(on_area2d_body_entered)
|
|
|
|
|
|
func fade_away() -> void:
|
|
var fade_tween := create_tween().set_parallel(true)
|
|
fade_tween.tween_property(sprite2d, "modulate:a", 0, fade_duration)
|
|
fade_tween.tween_property(sprite2d, "position", sprite2d.position + (direction * speed), fade_duration)
|
|
await (fade_tween.finished)
|
|
root.queue_free()
|
|
|
|
|
|
func on_area2d_body_entered(_body: Node2D) -> void:
|
|
fade_away()
|