using UnityEngine; public class BossPatternPhases : MonoBehaviour { // [Header]는 유니티 Inspector 창에서 폴더처럼 보이게 해줌 [Header("🔧 패턴 설정")] [SerializeField] private int totalPhases = 3; // 전체 패턴 구간 수 (Inspector에서 조절 가능) [Header("💎 XP 설정")] [SerializeField] private int phaseClearXP = 10; // 한 구간 통과 시 주는 XP [SerializeField] private int fullClearBonus = 30; // 모든 구간 통과 시 보너스 XP [SerializeField] private int hitPenalty = -5; // 피격 시 감점 XP (0으로 하면 감점 없음) // [SerializeField]는 인스펙터에서 실시간으로 볼 수 있게 해줌 [Header("🚩 상태 확인용")] [SerializeField] private int currentPhase = 0; // 현재 진행 중인 구간 (0: 시작 전) [SerializeField] private bool isPatternActive = false; // 패턴이 진행 중인지 [SerializeField] private bool wasHitThisPhase = false; // 이번 구간 중 피격당했는지 // ★ 초기화 private void Start() { ResetPattern(); } // ★ 패턴 전체 리셋 (새로운 패턴 시작 시 호출) public void ResetPattern() { currentPhase = 0; wasHitThisPhase = false; isPatternActive = false; Debug.Log("[보스] 패턴 초기화 완료!"); } // ★ 패턴 시작 (보스 AI에서 호출) public void StartPattern() { if (currentPhase >= totalPhases) { Debug.Log("이미 모든 패턴을 완료했어요!"); return; } isPatternActive = true; wasHitThisPhase = false; Debug.Log($"🔔 [페이즈 {currentPhase + 1}] 시작! 회피하세요!"); // ★ ★ ★ 여기서 보스의 애니메이션/이펙트 시작하면 됨 ★ ★ ★ } // ★ 플레이어가 피격당했을 때 호출 (PlayerHealth에서 연결) public void OnPlayerHit() { if (!isPatternActive) return; wasHitThisPhase = true; Debug.Log($"💥 [페이즈 {currentPhase + 1}] 중 피격당함! (XP 감점)"); // 피격 시 감점 처리 (필요하면) if (hitPenalty != 0 && ObsessionSystem.instance != null) { ObsessionSystem.instance.AddRunXP(hitPenalty); } } // ★ 현재 구간을 성공적으로 통과했을 때 호출 (보스 AI에서 호출) public void ClearCurrentPhase() { if (!isPatternActive) return; // 피격당했는지 확인 if (wasHitThisPhase) { Debug.Log($"❌ [페이즈 {currentPhase + 1}] 실패... 다음 구간 진행"); } else { // ★ 성공 시 XP 지급 if (ObsessionSystem.instance != null) { ObsessionSystem.instance.AddRunXP(phaseClearXP); Debug.Log($"✅ [페이즈 {currentPhase + 1}] 성공! +{phaseClearXP}XP"); } } // 다음 구간으로 currentPhase++; wasHitThisPhase = false; // 모든 구간을 완료했는가? if (currentPhase >= totalPhases) { Debug.Log("🎉 모든 패턴 완료!"); FullClearBonus(); isPatternActive = false; } } // ★ 모든 구간 통과 시 보너스 private void FullClearBonus() { if (ObsessionSystem.instance != null) { ObsessionSystem.instance.AddRunXP(fullClearBonus); Debug.Log($"🌟 전체 패턴 클리어 보너스 +{fullClearBonus}XP!"); } } // ★ 디버그용: 현재 상태를 콘솔에 출력 private void Update() { if (Input.GetKeyDown(KeyCode.P)) { Debug.Log($"[패턴 상태] 현재 구간: {currentPhase + 1}/{totalPhases}, 활성: {isPatternActive}"); } } // BossPatternPhases.cs에 추가 public bool IsPatternActive() { return isPatternActive; } }