* 공격 구조에 대한 고민
현재 공격 및 스킬 등을 구현하는 데에 어떻게 구조를 만들 지 고민이 큽니다.
쉽지 않지만.. 개방-폐쇄 등의 원칙과 컴포넌트 기반 설계 방식을 고려하며 짜려고 노력중입니다.
1. 입력 반응의 주체는 유저입니다. 예시) 마우스 버튼을 눌렀다.
2. 웨폰마다 가지는 액션이 다릅니다.
예를 들어, 검은 마우스 좌클릭 시 콤보 공격, 총은 격발을 해야합니다.
3. 에디터에서 액션과 웨폰을 조립하여 웨폰 데이터를 완성하고 싶습니다.
4. 액션은 여러 클래스를 가지며, 웨폰이 여러 액션 데이터를 가진다.
5. 웨폰 데이터에서 액션의 몽타주 재생이 일어나면, 노티파이가.. 해당 액션 클래스까지 접근하여 작업해야 한다.
현 시점에서
좌클릭 -> 웨폰 컴포넌트의 PressedLMB() 호출 -> 웨폰 컴포넌트에서 웨폰 데이터 중 현재 장착한 무기 데이터에 접근 -> 장착중인 무기 데이터의 어택 데이터 중 LMB에 바인딩 된 어택에 접근 -> 캐릭터의 상태를 체크하고 (공중에 있거나, Hitted 상태인지 등) 액션이 가능하면 몽타주 재생 -> 몽타주 내부의 노티파이가 실행 -> 노티파이에서 현재 액션 데이터에 접근 (불가능)
또한, 현재는 액션마다 직접 필요한 상태를 체크하도록 직접 코드를 짜주고 있습니다.
Action의 자식 클래스들은 모두 CheckCondition()을 가지고, CheckCondition을 매번 상속하여 정의하고 있는데,
최종적으로는 에디터에서 액션 에디터를 제작할때, 이 액션은 공중에 있을 때, Idle, Attack 상태일 때 LMB를 누르면 동작한다고 체크만 하면 해당 상태를 자동으로 체크해줄 수 있는 구조를 짜고 싶습니다.
하지만, 현재로서는 일주일이 넘는 고민에도 답을 내지 못하고 있습니다..
'프로젝트 > 프로젝트 진행 내역' 카테고리의 다른 글
UC++ 프로젝트 - 9 (0) | 2022.12.23 |
---|---|
UC++ 프로젝트 - 8 (0) | 2022.12.21 |
UC++ 프로젝트 - 6 (0) | 2022.11.17 |
UC++ 프로젝트 - 5 (0) | 2022.11.09 |
UC++ 프로젝트 - 4 (0) | 2022.11.02 |