gae_wild_jam/scripts/camera_2d.gd

27 lines
639 B
GDScript

extends Camera2D
var shake_tween: Tween
func shake(duration: float, intensity: float) -> void:
if shake_tween and shake_tween.is_valid():
shake_tween.kill()
offset = Vector2.ZERO
shake_tween = create_tween()
shake_tween.set_pause_mode(Tween.TWEEN_PAUSE_PROCESS)
var steps = 20
var step_duration = duration / steps
for i in steps:
var t = float(i) / float(steps)
var decay = 1.0 - t
var si = intensity * decay
var target = Vector2(
randf_range(-si, si),
randf_range(-si, si)
)
shake_tween.tween_property(self, "offset", target, step_duration)
shake_tween.tween_property(self, "offset", Vector2.ZERO, 0.05)