35 lines
933 B
GDScript

extends Node
#The time, in seconds, it should take for the character to fade to FadeOutValue
export var FadeOutTime = 2.0
export var InvisTime = 5.0
export var FadeInTime = 2.0
#The alpha value we aim for when fading out
export var FadeOutValue = 0.05
func AlmostFadeOutRoutine(player, delta):
var sprite : Sprite = player.get_node("Sprite")
var elapsed = delta
var origin = sprite.get_modulate().a
while sprite.self_modulate.a > FadeOutValue:
var a = lerp(origin, FadeOutValue, elapsed / FadeOutTime)
sprite.self_modulate = Color(1,1,1, a)
elapsed += yield()
elapsed -= FadeOutTime;
while elapsed < InvisTime:
elapsed += yield()
elapsed -= InvisTime;
while sprite.self_modulate.a < origin:
var a = lerp(FadeOutValue, origin, elapsed / FadeInTime)
sprite.self_modulate = Color(1,1,1, a)
elapsed += yield()
func StartEffect(player):
var rout = AlmostFadeOutRoutine(player, 0)
return rout