FSM StateMachine 상속
2024. 7. 1. 22:45ㆍUnity/Unity 학습정리
최종 프로젝트 진행중에 같은 State를 가지는 객체가 있는데 State안에서 분기되는 기준이랑 행동하는 로직이 조금씩 다른 두 개의 객체가 있었다. 해당 객체를 BaseMonster를 부모로 상속을 시켜주려하다보니 StateMachine도 상속을 시키게 되는 구조가 되었는데 그럼 각 객체는 겹치는 부분에 대해서 어떻게 처리를 할지 고민이었다.
- BaseMosnter를 부모로 PartnerMonster, EnemyMonster가 상속을 받는데 StateMachine도 상속을 받는다. 근데 상태들은 거의 비슷하고 동작의 로직이 조금씩 다르다
- ex) PartnerMonster는 Player를 따라다니고, 적을 탐지하면 추적 및 공격
- ex) EnemyMonster는 플레이어를 탐지하면 추적 및 공격, 자기자리를 벗어나면 다시 돌아옴
튜터님께 질문을 드렸더니, 두 가지 방식을 제안해주셨다.
- StateMachine을 따로 파서 원하는 State를 골라서 담아주기
- MonsterStateMachine을 공용으로 쓰되 분기를 두어 소프트웨어를 각각 채워주기
- 하나의 StateMachine으로 모두 처리가능
- PartnerMonster나 EnemyMonster가 StateMachine을 이용할 때 본인에 맞는 State를 생성하는 구조로 설계한다. (해당 객체에 필요한 소프트웨어만 넣어준다고 생각)
- 예를들어 같은 IdleState라도 Update에서 분기하는 조건이 두 객체가 다를 것
- 그럼 PartnerIdleState, EnemyIdleState를 만들되 객체에서 필요한 State만 생성자 혹은 다른곳에서 처리해 줄 것
후자의 방식도 좋은 방식인것 같아서 내일 이 방법으로 분기를 할 것 같다.
'Unity > Unity 학습정리' 카테고리의 다른 글
Unity - Interface로 원하는 동작 해보기 (0) | 2024.07.10 |
---|---|
플레이어를 쫓아다니는 몬스터 AI 구현 (0) | 2024.07.04 |
Unity - Behaviour Tree (1) (0) | 2024.06.25 |
Unity - FSM(Finite State Machine)(3) (0) | 2024.06.20 |
Unity - FSM(Finite State Machine)(2) (0) | 2024.06.18 |