51 lines
1.4 KiB
GDScript
51 lines
1.4 KiB
GDScript
extends Camera2D
|
|
|
|
var lastValid = false
|
|
var player = null
|
|
|
|
var speedMod = 0
|
|
|
|
func _ready():
|
|
get_tree().get_root().size_changed.connect(resize)
|
|
|
|
func resetZoom():
|
|
return Vector2.ONE * 3 * get_viewport().size.length() / 3000
|
|
|
|
func _process(delta):
|
|
if is_instance_valid(player):
|
|
var velocModifier = clamp(abs(player.velocity.x) - 700, 0, 1000)
|
|
var direction = clamp(player.velocity.x, -1, 1)
|
|
|
|
speedMod = lerpf(speedMod, velocModifier * direction / 5, delta * 10)
|
|
|
|
global_position = (get_local_mouse_position() / 2.5) + player.global_position
|
|
global_position.x += speedMod
|
|
else:
|
|
lastValid = false
|
|
if player and not lastValid:
|
|
lastValid = true
|
|
var fader = $CanvasLayer/Fader
|
|
$CanvasLayer.visible = true
|
|
fader.offset = Vector2(0, get_viewport().size.y)
|
|
var tween = create_tween()
|
|
tween.set_ease(Tween.EASE_IN).set_trans(Tween.TRANS_SINE)
|
|
tween.tween_property(fader, "offset", Vector2(0, get_viewport().size.y * 2), 0.5).set_delay(0.15)
|
|
|
|
global_position = player.global_position
|
|
zoom = resetZoom()
|
|
reset_smoothing()
|
|
|
|
await tween.finished
|
|
fader.offset = Vector2.ZERO
|
|
|
|
func resize():
|
|
zoom = resetZoom()
|
|
|
|
func deathAnim():
|
|
var fader = $CanvasLayer/Fader
|
|
var tween = create_tween()
|
|
tween.set_ease(Tween.EASE_OUT).set_trans(Tween.TRANS_CUBIC)
|
|
|
|
tween.tween_property(fader, "offset", Vector2(0, get_viewport().size.y), 0.3)
|
|
player = null
|
|
return tween
|