feat: 드로그 보스 AI 및 런타임 상태 구조 재구성

- 드로그 전투 컨텍스트를 BossBehaviorRuntimeState 중심 구조로 정리하고 BossEnemy, 패턴 액션, 조건 노드가 마지막 실행 결과와 phase 상태를 직접 사용하도록 갱신
- BT_Drog와 재빌드 에디터 스크립트를 확장해 phase 전환, 집행 결과 분기, 거리/쿨타임 기반 패턴 선택을 드로그 전용 자산과 노드 파라미터로 재구성
- 드로그 패턴/스킬/이펙트/애니메이션 플레이스홀더 자산을 재생성하고 보스 프리팹이 새 런타임 상태 및 등록 클립 구성을 참조하도록 정리
This commit is contained in:
2026-04-06 13:56:47 +09:00
parent 60275c6cd9
commit 904bc88d36
172 changed files with 98477 additions and 3490 deletions

View File

@@ -30,6 +30,7 @@ public partial class UsePatternAction : Action
private int currentStepIndex;
private float waitEndTime;
private bool isWaiting;
private bool isSkillStepExecuting;
protected override Status OnStart()
{
@@ -66,6 +67,7 @@ public partial class UsePatternAction : Action
currentStepIndex = 0;
isWaiting = false;
isSkillStepExecuting = false;
return ExecuteCurrentStep();
}
@@ -83,9 +85,17 @@ public partial class UsePatternAction : Action
}
else
{
if (skillController.IsPlayingAnimation)
return Status.Running;
if (isSkillStepExecuting)
{
if (skillController.IsPlayingAnimation)
return Status.Running;
isSkillStepExecuting = false;
if (skillController.LastExecutionResult != SkillExecutionResult.Completed)
return Status.Failure;
}
else if (skillController.IsPlayingAnimation)
return Status.Running;
}
currentStepIndex++;
@@ -102,6 +112,7 @@ public partial class UsePatternAction : Action
protected override void OnEnd()
{
skillController = null;
isSkillStepExecuting = false;
}
private Status ExecuteCurrentStep()
@@ -132,13 +143,17 @@ public partial class UsePatternAction : Action
}
}
bool success = skillController.ExecuteSkill(step.Skill);
GameObject skillTarget = step.Skill.JumpToTarget ? jumpTarget : Target?.Value;
bool success = skillTarget != null
? skillController.ExecuteSkill(step.Skill, skillTarget)
: skillController.ExecuteSkill(step.Skill);
if (!success)
{
Debug.LogWarning($"[UsePatternAction] 스킬 실행 실패: {step.Skill.SkillName} (index {currentStepIndex})");
return Status.Failure;
}
isSkillStepExecuting = true;
LogDebug($"패턴 실행: {Pattern.Value.PatternName} / Step={currentStepIndex} / Skill={step.Skill.SkillName}");
// jumpToTarget 스킬이면 타겟 위치 전달
@@ -233,7 +248,7 @@ public partial class UsePatternAction : Action
private void LogDebug(string message)
{
BossCombatBehaviorContext context = GameObject.GetComponent<BossCombatBehaviorContext>();
BossBehaviorRuntimeState context = GameObject.GetComponent<BossBehaviorRuntimeState>();
context?.LogDebug(nameof(UsePatternAction), message);
}
}