35 lines
934 B
GDScript
35 lines
934 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 = 1.0
|
|
|
|
#The alpha value we aim for when fading out
|
|
export var FadeOutValue = 0.025
|
|
|
|
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
|
|
|