@tool extends Node2D @export var key := "": set(val): key = val if is_node_ready(): _update_text() @export var label_rotation := 0.0: set(val): label_rotation = val if is_node_ready(): label.rotation = val @onready var label := $RichTextLabel as RichTextLabel @onready var area2d := $Area2D as Area2D func _ready() -> void: label.rotation = label_rotation _update_text() if not Engine.is_editor_hint(): label.visible = false area2d.body_entered.connect(_on_area_entered) func _on_area_entered(_body): if not _body is MainPlayer: return label.visible = true await get_tree().create_timer(randf()).timeout var tween = create_tween() tween.tween_property(label, "position:y", 3.0, 0.6).set_trans(Tween.TRANS_BOUNCE) tween.tween_property(label, "position:y", 0.0, 0.6).set_trans(Tween.TRANS_BOUNCE) tween.set_loops(10) create_tween().tween_property(label, "modulate:a", 0.0, 8.0) func _update_text(): label.text = "[pulse ease=2.0 freq=2 color=#000000cf] " + tr(key)