문제점
- AIController가 과도하게 많은 역할을 맡고 있었다.
- 스킬 선택, 쿨타임 관리, 이동 로직, 경로 탐색 등 단일 클래스가 모두 처리.
- 비동기 스킬 실행 간 중복 실행 문제 발생.
- 스킬 코루틴이 끝나기 전 다른 스킬이 중첩 실행되는 경우 존재.
- 스킬의 순차 실행 및 조건 제어 어려움
- 예: 점프 후 범위 스킬 실행 등 복합 스킬 구성에서 흐름 제어가 어려웠음.
- 스킬의 개별 쿨타임 처리와 우선순위 관리 부족
- 여러 스킬이 쿨이 끝나면 동시에 발동하는 문제.
시도해본 것
- MonsterSkillController로 스킬 관련 로직을 분리하여 단일책임원칙을 적용.
- 쿨타임 관리, 실행 제어, 스킬 코루틴 실행을 전담.
- BaseMonsterSkillData.Excute를 IEnumerator로 변경하여 코루틴 제어 가능하게 구현.
- ComboSkillData를 도입하여 스킬 묶음 실행 구조 도입.
- 예: 점프 → 범위 스킬 → 딜레이 → 투사체 발사
- 점프 스킬은 Action OnJumpFinished를 통해 실행 완료 이벤트를 활용.
- 스킬 선택 시 우선순위를 고려하여 가장 쿨다운 시간이 긴 스킬을 우선 실행.
해결 방안
- 역할 분리
- AIController: 이동, 경로 탐색, 시야 판별만 담당.
- SkillController: 스킬 로직과 상태 관리 전담.
- 스킬 쿨타임 및 우선순위 로직 개선
- 쿨이 끝난 스킬 중 쿨다운 시간이 긴 스킬을 우선 사용.
- 실행 후 해당 스킬만 쿨타임 초기화.
- 비동기 스킬 처리 개선
- _isUsingSkill 플래그로 중복 실행 방지.
- 점프 후 스킬 연계 구조에 yield return과 Action 조합 적용.
- 확장성 있는 구조 확보
- 새로운 스킬은 BaseMonsterSkillData 상속만으로 추가 가능.
- ComboSkillData 활용으로 페이즈 기반 스킬 구성 용이.
알게 된 것
- 단일책임원칙을 지키면 코드 유지보수가 현저히 쉬워진다.
- 코루틴을 통한 스킬 실행 제어는 Action, yield return 조합으로 깔끔하게 구현 가능하다.
- 스킬 쿨타임 우선순위를 고려한 실행 방식은 실제 게임 플레이의 자연스러움에 직접적인 영향을 준다.
- 추상화된 SkillData를 통해 다양한 보스 AI 구성 가능성이 열린다.
- 스킬 실행은 단순 실행보다 흐름 제어 로직을 함께 구성해야 안정성이 확보된다.
'Unity > Unity 개발' 카테고리의 다른 글
| 탑다운 게임에서 곡사포 형식의 투사체 발사 구현 (0) | 2025.05.14 |
|---|---|
| SpriteRenderer 기준으로 Collider가 부정확하게 설정됨 (0) | 2025.05.14 |
| A* 경로 탐색 알고리즘 적용 (0) | 2025.05.12 |
| 몬스터 프리팹 구조 설계 "프리팹 1개 주입 방식 vs 몬스터별 프리팹 방식" (1) | 2025.05.08 |
| Unity 2D + Stack 게임 제작 일기(3) (0) | 2025.05.02 |