fix: 드로그 패턴 애니메이션 재생 끊김 수정

- BT 재평가 중에도 패턴 실행 상태를 보존하도록 보스 패턴 액션과 런타임 상태를 조정했다.
- 스킬 컨트롤러에서 동일 프레임 종료 판정을 막아 패턴 내 다음 스킬이 즉시 잘리는 문제를 수정했다.
- 드로그 BT, 패턴/스킬 데이터, 애니메이션 클립과 컨트롤러를 현재 검증된 재생 구성으로 정리했다.
- 자연 발동 기준으로 콤보-기본기2 재생 시간을 재검증해 클립 길이와 실제 재생 간격이 맞는 것을 확인했다.
This commit is contained in:
2026-04-12 05:44:54 +09:00
parent 12a481b596
commit 9fd231626b
40 changed files with 598072 additions and 425361 deletions

View File

@@ -43,6 +43,12 @@ public abstract partial class BossPatternActionBase : Action
private ChargeStepData activeChargeData;
private bool chargeTelegraphApplied;
/// <summary>
/// 현재 액션 인스턴스가 진행 중인 패턴 실행 상태를 이미 보유하고 있는지 여부입니다.
/// BT 재평가 중 재진입할 때 기존 실행을 이어가기 위한 가드로 사용합니다.
/// </summary>
protected bool HasActivePatternExecutionState => activePattern != null;
/// <summary>
/// 액션 시작 시 실제로 실행할 패턴과 대상을 결정합니다.
/// </summary>
@@ -56,6 +62,10 @@ public abstract partial class BossPatternActionBase : Action
protected override Status OnStart()
{
ResolveReferences();
if (ShouldPreserveExecutionState())
return Status.Running;
ClearRuntimeState();
if (!IsReady())
@@ -153,6 +163,9 @@ public abstract partial class BossPatternActionBase : Action
protected override void OnEnd()
{
if (ShouldPreserveExecutionState())
return;
ClearRuntimeState();
}
@@ -389,6 +402,20 @@ public abstract partial class BossPatternActionBase : Action
waitEndTime = 0f;
}
/// <summary>
/// BT 관찰자 재평가로 노드가 다시 시작될 때 현재 패턴 실행 상태를 유지해야 하는지 판단합니다.
/// </summary>
private bool ShouldPreserveExecutionState()
{
if (!IsReady() || activePattern == null || runtimeState == null || !runtimeState.IsExecutingPattern)
return false;
if (runtimeState.IsBehaviorSuppressed || bossEnemy.IsDead)
return false;
return true;
}
private bool IsFirstSkillStep(int stepIndex)
{
if (activePattern == null || activePattern.Steps == null)