Files
Papay-Shooter/ui/floating_damage_text.gd

31 lines
827 B
GDScript

extends Label
class_name FloatingDamageText
var target_pos: Vector3
var camera: Camera3D
var float_offset: float = 0.0
func _ready() -> void:
# Setup Tween for floating up and fading out
var tween = create_tween()
tween.set_parallel(true)
# Float up 100 pixels
tween.tween_property(self, "float_offset", 100.0, 1.0)
# Fade out
tween.tween_property(self, "modulate:a", 0.0, 1.0)
tween.chain().tween_callback(queue_free)
func _process(_delta: float) -> void:
if not is_instance_valid(camera):
queue_free()
return
if camera.is_position_behind(target_pos):
visible = false
else:
visible = true
var screen_pos = camera.unproject_position(target_pos)
# Center the label on the point, then subtract the float offset (moving up on screen)
position = screen_pos - size / 2.0 + Vector2(0, -float_offset)