gfolf2/src/ui/game_viewport_container.gd

27 lines
776 B
GDScript3
Raw Normal View History

2024-11-17 18:10:24 -07:00
class_name GameViewportContainer extends SubViewportContainer
## SubViewportContainer with game-specific special effects
var _screen_shake_intensity: float = 0.0
@onready var root_control: Control = %RootControl
## Start playing a screen shake effect.
func screen_shake(intensity: float, duration: float = 0.2) -> void:
var tween := get_tree().create_tween()
_screen_shake_intensity = intensity
tween.tween_property(self, "_screen_shake_intensity", 0.0, duration).set_trans(
Tween.TRANS_CUBIC
)
tween.tween_callback(_reset_position)
func _reset_position() -> void:
position = Vector2.ZERO
func _process(_delta: float) -> void:
if _screen_shake_intensity > 0:
position.x = randfn(0, _screen_shake_intensity)
position.y = randfn(0, _screen_shake_intensity)