2025-08-28 08:15:18 +08:00
|
|
|
@tool
|
2025-08-28 06:49:50 +08:00
|
|
|
extends Camera2D
|
2025-08-28 08:15:18 +08:00
|
|
|
class_name CameraManager
|
|
|
|
|
|
2025-08-28 11:14:14 +08:00
|
|
|
@export var shakeOffset: float = 100
|
|
|
|
|
|
|
|
|
|
var shaking: bool = false
|
|
|
|
|
|
|
|
|
|
static var instance: CameraManager = null
|
2025-08-28 08:15:18 +08:00
|
|
|
|
|
|
|
|
func _ready():
|
2025-08-28 11:14:14 +08:00
|
|
|
instance = self
|
2025-08-28 08:15:18 +08:00
|
|
|
func _physics_process(_delta):
|
|
|
|
|
if is_instance_valid(UIState.player):
|
|
|
|
|
position = UIState.player.position
|
2025-08-28 11:14:14 +08:00
|
|
|
if shaking:
|
|
|
|
|
position += MathTool.randv2_range(shakeOffset)
|
|
|
|
|
|
|
|
|
|
static func shake(millseconds: int = 1000):
|
|
|
|
|
print("shake start")
|
|
|
|
|
instance.shaking = true
|
|
|
|
|
await TickTool.millseconds(millseconds)
|
|
|
|
|
instance.shaking = false
|
|
|
|
|
print("shake end")
|