2020-04-04 15:57:27 +02:00

50 lines
1.5 KiB
GDScript

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