extends Node #The time, in seconds, it should take for the character to grow up export var GrowUpTime = 2.0 export var IsBigTime = 5.0 export var GrowDownTime = 1.0 #How much bigger should the player become export var GrowUpFactor = 5 #How much slower should the player become export var SlowFactor = 8 func GiantRoutine(player, delta): var elapsed = delta var fast_speed = player.MAX_SPEED var slow_speed = player.MAX_SPEED / SlowFactor var fast_acc = player.ACCELERATION var slow_acc = player.ACCELERATION / SlowFactor var small_scale = player.transform.get_scale() var big_scale = player.transform.get_scale() * GrowUpFactor var sprite = player.get_node("Sprite") var coll = player.get_node("CollisionShape2D") while elapsed < GrowUpTime: player.MAX_SPEED = lerp(fast_speed, slow_speed, elapsed / GrowUpTime) player.ACCELERATION = lerp(fast_acc, slow_acc, elapsed / GrowUpTime) setScale(sprite, coll, lerp(small_scale, big_scale, elapsed / GrowUpTime)) elapsed += yield() elapsed -= GrowUpTime; while elapsed < IsBigTime: elapsed += yield() elapsed -= IsBigTime; while elapsed < GrowDownTime: player.MAX_SPEED = lerp(slow_speed, fast_speed, elapsed / GrowDownTime) player.ACCELERATION = lerp(slow_acc, fast_acc, elapsed / GrowDownTime) setScale(sprite, coll, lerp(big_scale, small_scale, elapsed / GrowDownTime)) elapsed += yield() func setScale(sprite, coll, scale): sprite.scale = scale; coll.scale = scale; func StartEffect(player): var rout = GiantRoutine(player, 0) return rout