41 lines
990 B
GDScript
41 lines
990 B
GDScript
extends Node
|
|
|
|
onready var audioPlayer = $AudioPlayer
|
|
|
|
var slowFactor
|
|
var lifetime = 5
|
|
var elapsed = 0
|
|
var sprite
|
|
var players
|
|
|
|
onready var mask = $Mask
|
|
|
|
func slow_player(victim):
|
|
if victim.is_in_group("Player"):
|
|
players.append(victim)
|
|
audioPlayer.play()
|
|
|
|
func unslow_player(victim):
|
|
players.remove(players.find(victim))
|
|
|
|
# Called when the node enters the scene tree for the first time.
|
|
func _ready():
|
|
players = []
|
|
sprite = get_node("Sprite")
|
|
get_node("Sprite/Area2D").connect("body_entered", self, "slow_player")
|
|
get_node("Sprite/Area2D").connect("body_exited", self, "unslow_player")
|
|
|
|
func _process(delta):
|
|
elapsed += delta
|
|
if mask != null:
|
|
mask.offset.x = lerp(88, 270, elapsed / 0.8)
|
|
if mask.offset.x >= 269:
|
|
mask.queue_free()
|
|
mask = null
|
|
for each in players:
|
|
each.SPEED_FACTORS.append(0.5)
|
|
if elapsed >= lifetime * 0.7:
|
|
sprite.self_modulate = Color(1,1,1,lerp(1, 0, (elapsed - lifetime * 0.7) / (lifetime * 0.3)))
|
|
if elapsed >= lifetime:
|
|
queue_free()
|