2020-10-21 02:33:58 +00:00
|
|
|
extends Camera2D
|
|
|
|
|
2020-10-26 12:21:11 +00:00
|
|
|
class_name CameraGame
|
|
|
|
|
2020-10-21 02:33:58 +00:00
|
|
|
var _shake_config := {
|
|
|
|
'amplitude': .0,
|
|
|
|
'transition': Tween.TRANS_SINE,
|
|
|
|
'easing': Tween.EASE_IN_OUT,
|
|
|
|
'priority': 0
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
func start_shake(duration:float = .2, frequency:float = 15.0, amplitude:float = 5.0, priority:int = 0):
|
|
|
|
if priority >= _shake_config.priority:
|
|
|
|
_shake_config.priority = priority
|
|
|
|
_shake_config.amplitude = amplitude
|
|
|
|
$Duration.wait_time = duration
|
|
|
|
$Frequency.wait_time = 1 / frequency
|
|
|
|
|
|
|
|
$Duration.start()
|
|
|
|
$Frequency.start()
|
|
|
|
|
|
|
|
_new_shake()
|
|
|
|
|
|
|
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
func _new_shake():
|
|
|
|
var rand := Vector2(
|
|
|
|
rand_range(-_shake_config.amplitude, _shake_config.amplitude),
|
|
|
|
rand_range(-_shake_config.amplitude, _shake_config.amplitude)
|
|
|
|
)
|
|
|
|
|
|
|
|
$Tween.interpolate_property(self, "offset", self.offset, rand, $Frequency.wait_time, _shake_config.transition, _shake_config.easing)
|
|
|
|
$Tween.start()
|
|
|
|
|
|
|
|
|
|
|
|
func _reset():
|
|
|
|
$Tween.interpolate_property(self, "offset", self.offset, Vector2.ZERO, $Frequency.wait_time, _shake_config.transition, _shake_config.easing)
|
|
|
|
$Tween.start()
|
|
|
|
_shake_config.priority = 0
|
|
|
|
|
|
|
|
func _on_Frequency_timeout() -> void:
|
|
|
|
_new_shake()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func _on_Duration_timeout() -> void:
|
|
|
|
_reset()
|
|
|
|
$Frequency.stop()
|