1. PlayerAttackMonster() (기존 FleeFromPlayer 메서드)
기능 별 메서드들을 추가하여 수정
- Vector3 GetSafeFleeDestination : 도망 위치 계산
- Vector3 GetRandomDirection : 랜덤 방향 계산
- bool TryGetValidNavMeshPosition : 유효한 NavMesh 위치 확인
- bool IsValidFleeAngle : 플레이어를 지나치지 않도록 각도 설정(플레이어를 바라본 180도를 제외하도록)
- bool IsValidPathLength : 이동 경로 길이 확인
2. MonsterController
MonsterController를 상속받는 각각의 몬스터들을 분리
- MonsterController -> 추상 클래스로 변경
- SetState 메서드 삭제 -> MonsterState 클래스를 만들어 이벤트로 처리
1. StunMonsterController (사진을 찍으면 잠시 멈추는 몬스터)
- PlayerAttackMonster(override), SetStun, CoSetStun(Coroutine)
2. FleeMonsterController (사진을 찍으면 도망갔다가 원래자리로 돌아가는 몬스터)
- PlayerAttackMonster(override), FleeAndTransitionToWandering(Coroutine), GetSafeFleeDestination, GetRandomDirection, TryGetValidNavMeshPosition, IsValidFleeAngle, bool IsValidPathLength(Vector3 destination, out float pathLength)
3. BossMonsterController (계속해서 추적하는 몬스터)
- PlayerAttackMonster(override)