41 lines
795 B
GDScript3
41 lines
795 B
GDScript3
|
class_name TextFire extends Node
|
||
|
|
||
|
var ui : Control
|
||
|
var speaker : AudioStreamPlayer2D
|
||
|
@export var max_x : float
|
||
|
@export var max_y : float
|
||
|
@export var duration : float
|
||
|
|
||
|
var orig_x : float
|
||
|
var orig_y : float
|
||
|
var moving = false
|
||
|
var elapsed = 0
|
||
|
var changed = false
|
||
|
|
||
|
|
||
|
func _ready():
|
||
|
speaker = get_parent().get_child(1)
|
||
|
ui = get_parent()
|
||
|
|
||
|
func Fire():
|
||
|
if (!changed): speaker.pitch_scale = randf_range(.95, 1)
|
||
|
speaker.play()
|
||
|
orig_x = ui.scale.x
|
||
|
orig_y = ui.scale.y
|
||
|
elapsed = 0
|
||
|
moving = true
|
||
|
ui.visible = true
|
||
|
|
||
|
func _process(delta):
|
||
|
Lerp()
|
||
|
|
||
|
func Lerp():
|
||
|
if (moving):
|
||
|
elapsed += get_process_delta_time()
|
||
|
var c = clampf(elapsed / duration, 0.0, 1.0)
|
||
|
c = ease(c, 0.4)
|
||
|
var temp_x = lerpf(max_x, orig_x, c)
|
||
|
var temp_y = lerpf(max_y, orig_y, c)
|
||
|
ui.scale.x = temp_x
|
||
|
ui.scale.y = temp_y
|