콘텐츠로 이동

UOverAnimComponent: Slow Motion과 Pause

헤더: OverAnimation/Runtime/OverAnimComponent.h

Details: Slow Motion

UI 이름 C++ 속성 기본값 / 범위 표시 조건 영향
Slow-Motion Effect Timing TimeDilationPolicy Keep Effects Synced to Game Time (FollowGameTime) 항상 FollowGameTime은 dilated game delta를 사용합니다. IgnoreTimeDilation은 world/owner time dilation을 simulation에서 제거합니다. DisableDuringSlowMotion은 effective time scale이 임계값 아래일 때 effect를 source pose로 돌립니다.
Disable Below Time Scale SlowMotionDisableThreshold 0.95 / 0.01–1.0 TimeDilationPolicy == DisableDuringSlowMotion world time dilation × Owner Custom Time Dilation이 이 값보다 작으면 effect를 억제합니다.
Resume Time-Scale Margin SlowMotionResumeHysteresis 0.05 / 0.0–0.5 TimeDilationPolicy == DisableDuringSlowMotion 이미 억제된 상태는 Disable Below Time Scale + Margin 이상이 되어야 다시 활성화됩니다. 임계값 주변의 반복 reset을 막습니다.
When Slow Motion Disables Effects SlowMotionSilhouettePolicy Return Immediately to Source Pose (ImmediateReset) TimeDilationPolicy == DisableDuringSlowMotion 즉시 source pose로 갈지, runtime response 수락을 멈추고 blend-out할지 결정합니다.
Return-to-Source Blend Time SlowMotionSilhouetteBlendDuration 0.12 s / 최소 0.0 DisableDuringSlowMotion + BlendToSource 현재 composed silhouette을 source pose로 섞는 real-time 길이입니다.

Details: Pause

UI 이름 C++ 속성 기본값 / 범위 표시 조건 영향
When the Game Is Paused PauseBehavior Freeze Current Silhouette 항상 FreezeCurrentSilhouette는 결과를 동결합니다. ReturnToSourcePose는 response 입력을 멈추고 source pose로 반환합니다. FinishExistingEffectsInRealTime은 새 입력을 멈추되 active envelope·spring·release motion을 real time으로 끝냅니다. motion 및 automatic-stage 분석은 pause 중 새 입력을 만들지 않습니다.
Return-to-Source Behavior PauseReturnPolicy Blend Smoothly to Source Pose (BlendToSource) PauseBehavior == ReturnToSourcePose pause source-pose 반환을 즉시 reset할지 real-time blend로 할지 결정합니다.
Pause Return Blend Time PauseReturnBlendDuration 0.12 s / 최소 0.0 ReturnToSourcePose + BlendToSource pause 진입 뒤 current silhouette을 source pose로 섞는 real-time 길이입니다.

정책 Enum

Enum UI 이름 의미
EOverAnimTimeDilationPolicy FollowGameTime Keep Effects Synced to Game Time dilated game delta를 simulation에 사용합니다. slow-motion animation과 recovery를 동기화합니다.
IgnoreTimeDilation Keep Effect Timing in Real Time simulation에서는 world/owner time dilation을 제거합니다. Signal의 motion 측정은 game-time 기반으로 남습니다.
DisableDuringSlowMotion Disable Effects in Slow Motion effective time scale이 threshold 아래일 때 source pose로 반환합니다.
EOverAnimSlowMotionSilhouettePolicy ImmediateReset Return Immediately to Source Pose active response를 정리하고 즉시 source pose로 만듭니다.
BlendToSource Blend Smoothly to Source Pose 새 response를 받지 않은 채 구성된 silhouette을 real time으로 blend-out합니다.
EOverAnimPauseBehavior FreezeCurrentSilhouette Freeze Current Silhouette pause 중 현재 결과를 동결하고 새 motion stage/Signal을 만들지 않습니다.
ReturnToSourcePose Return to Source Pose pause 중 response 입력을 멈추고 source pose로 반환합니다. 반환 방식은 PauseReturnPolicy가 결정합니다.
FinishExistingEffectsInRealTime Finish Existing Effects in Real Time 새 response 입력을 중단하고 active envelope·spring·release motion만 real time으로 마무리합니다.

Blueprint API

Blueprint 이름 C++ 선언 입력 반환 전제 조건·거부 및 상태 변화
Set Slow-Motion Effect Timing void SetTimeDilationPolicy(EOverAnimTimeDilationPolicy Policy) time-dilation policy enum 없음 값이 바뀌면 즉시 runtime effect 상태를 동기화합니다. DisableDuringSlowMotion을 선택한 경우 현재 effective time scale과 threshold/hysteresis가 곧바로 반영됩니다.
Get Slow-Motion Effect Timing EOverAnimTimeDilationPolicy GetTimeDilationPolicy() const 없음 저장된 policy 상태를 바꾸지 않습니다.
Set Slow-Motion Return Behavior void SetSlowMotionSilhouettePolicy(EOverAnimSlowMotionSilhouettePolicy Policy, float BlendDurationSeconds = 0.12f) 반환 policy, blend 시간 없음 duration이 비유한수 또는 음수면 0.0으로 안전 처리합니다. policy 또는 duration이 달라졌을 때 runtime 상태를 즉시 동기화합니다.
Get Slow-Motion Return Behavior EOverAnimSlowMotionSilhouettePolicy GetSlowMotionSilhouettePolicy() const 없음 저장된 policy 상태를 바꾸지 않습니다.
Set Pause Behavior void SetPauseBehavior(EOverAnimPauseBehavior Behavior) pause behavior enum 없음 값이 바뀌면 즉시 runtime 상태를 동기화합니다. 현재 world가 paused라면 response 입력 허용 여부와 silhouette 반환 상태가 반영됩니다.
Get Pause Behavior EOverAnimPauseBehavior GetPauseBehavior() const 없음 저장된 behavior 상태를 바꾸지 않습니다.
Set Pause Return Behavior void SetPauseReturnPolicy(EOverAnimSlowMotionSilhouettePolicy Policy, float BlendDurationSeconds = 0.12f) 반환 policy, blend 시간 없음 duration이 비유한수 또는 음수면 0.0으로 안전 처리합니다. 값이 달라졌을 때 runtime 상태를 즉시 동기화합니다.
Get Pause Return Behavior EOverAnimSlowMotionSilhouettePolicy GetPauseReturnPolicy() const 없음 저장된 policy 상태를 바꾸지 않습니다.

C++ 시간·억제 helper

아래 함수는 static C++ helper이며 Component/manager 상태를 변경하지 않습니다.

C++ 선언 입력 반환 유효성 및 계산
static bool ShouldDisableEffectsForSlowMotion(EOverAnimTimeDilationPolicy Policy, float EffectiveTimeDilation, float DisableThreshold) policy, effective time scale, threshold 억제 여부 내부적으로 hysteresis 0, 이전 억제 상태 falseResolveSlowMotionSuppressionState를 호출합니다.
static bool ResolveSlowMotionSuppressionState(EOverAnimTimeDilationPolicy Policy, bool bWasSuppressed, float EffectiveTimeDilation, float DisableThreshold, float ResumeHysteresis) policy, 이전 상태, scale, threshold, margin 억제 여부 policy가 DisableDuringSlowMotion이 아니면 false입니다. 비유한 time scale은 1.0, threshold는 0.01–1.0, hysteresis는 0.0–0.5로 안전 처리합니다. 새 억제는 scale < threshold, 이미 억제된 상태의 해제 기준은 scale >= min(threshold + hysteresis, 1.0)입니다.
static float ResolveSimulationDeltaSeconds(EOverAnimTimeDilationPolicy Policy, float DilatedDeltaSeconds, float EffectiveTimeDilation) policy, dilated delta, effective scale simulation delta 초 dilated delta가 비유한수 또는 <= 0이면 0입니다. IgnoreTimeDilation이 아니면 유효 dilated delta를 그대로 반환합니다. IgnoreTimeDilation은 effective scale이 유효하고 충분히 클 때 dilated / scale을 반환하며 최대 0.1 s로 제한합니다.
static float ResolvePausedSimulationDeltaSeconds(EOverAnimPauseBehavior Behavior, float RealDeltaSeconds) pause behavior, real-time delta pause simulation delta 초 FinishExistingEffectsInRealTime이 아니거나 real delta가 비유한수/<=0이면 0입니다. 그 외에는 real delta를 최대 0.1 s로 제한합니다.

runtime 상태에 미치는 결과

  • Are OverAnim Effects Active는 component switch와 global switch가 켜져 있고, slow motion suppression이 아니며, paused world에서 ReturnToSourcePose가 아닐 때만 true입니다.
  • runtime 상태가 전환되면 Component는 pending Signal, collision impact history, motion signal state를 초기화합니다.
  • BlendToSource가 선택된 slow-motion/pause 억제에서는 manager가 response를 수락하지 않는 상태로 blend-out을 진행합니다. ImmediateReset은 runtime effect를 즉시 비활성화합니다.
  • paused world에서 FinishExistingEffectsInRealTime은 active effect simulation만 real time으로 진행하며, 새 runtime Signal 입력은 suspended 상태입니다.