初次提交
This commit is contained in:
@@ -0,0 +1,34 @@
|
||||
## TimeManager — 时间缩放与 GameTick 计数器(Autoload: TimeManager)
|
||||
## 权威来源:implementation_plan.md §2.1 Layer-0
|
||||
##
|
||||
## - time_scale: 全局时间缩放(慢动作 / 冻结时间 Core 效果)
|
||||
## - game_tick: 物理帧计数器(每 _physics_process 递增 1)— 不受 time_scale 影响
|
||||
extends Node
|
||||
|
||||
var time_scale: float = 1.0
|
||||
var game_tick: int = 0
|
||||
|
||||
func _ready() -> void:
|
||||
process_mode = Node.PROCESS_MODE_ALWAYS # 暂停时仍持续计数
|
||||
|
||||
func _physics_process(_delta: float) -> void:
|
||||
game_tick += 1
|
||||
Engine.time_scale = time_scale
|
||||
|
||||
## 返回当前帧缩放后 delta(供战斗系统使用)
|
||||
func scaled_delta(raw_delta: float) -> float:
|
||||
return raw_delta * time_scale
|
||||
|
||||
## 设置时间缩放(clamp 防止异常値)
|
||||
func set_time_scale(scale: float) -> void:
|
||||
time_scale = clamp(scale, 0.0, 10.0)
|
||||
|
||||
## 恢复正常速度
|
||||
func reset_time_scale() -> void:
|
||||
time_scale = 1.0
|
||||
Engine.time_scale = 1.0
|
||||
|
||||
## 忽略帧计数器(关卡重置)
|
||||
func reset() -> void:
|
||||
game_tick = 0
|
||||
reset_time_scale()
|
||||
Reference in New Issue
Block a user