작성
·
45
·
수정됨
0
플레이어 캐릭터와 적 캐릭터 모두 공통으로 피격 모션을 사용하는 건 이해했는데, 이 로직이 무기 쪽에 들어가 있다 보니 캐릭터가 어떤 무기를 들고 있느냐에 따라 피격 모션이 달라지는 구조가 조금 부자연스럽게 느껴집니다. 이 부분은 의도된 설계인가요?
답변 3
1
안녕하세요!
설계 의도를 말씀드리기 전에, 캐릭터가 들고 있는 무기에 따라 피격 애니메이션을 다르게 처리하는 이유를 먼저 생각해보겠습니다. 예를 들어 캐릭터가 몽둥이로 맞는다고 상상해보세요.
어떤 무기를 들고 있느냐에 따라 당연히 반응이 달라집니다. 한손검과 방패를 들고 있을 때와 창을 들고 있을 때의 파지 자세가 다른데, 피격 반응이 똑같을 수는 없겠죠?
그렇다면 캐릭터가 어떤 무기를 들고 있는지에 따라 피격 애니메이션을 다르게 처리해야 한다는 것을 확인했습니다.
이제 중요한 질문은, 이 애니메이션을 어디서 처리하는 것이 합리적이고 관리하기 좋을까요?
만약 캐릭터에서 처리한다면 어떨까요? 새로운 무기가 추가될 때마다 캐릭터에 해당 애니메이션들을 추가해야 합니다. 그뿐만 아니라 피격을 처리할 때마다 현재 캐릭터가 어떤 무기를 들고 있는지 확인해서 그에 맞는 애니메이션을 재생하는 코드가 필요합니다. 무기가 늘어나면 늘어날 수록 코드는 점점 더 길어지고 복잡해 지겠죠.
하지만 무기에서 애니메이션 데이터를 처리한다면? 그냥 해당 무기의 애니메이션을 재생하면 끝입니다.
어느 쪽이 더 효율적일까요? 불필요한 분기 코드도 필요 없고, 새로운 무기가 추가될 때마다 데이터 관리도 훨씬 용이합니다.
그래서 대부분의 게임에서 이 방식을 사용하고 있습니다.
0
무엇에 맞았느냐에 따라 피격 모션이 달라져야 한다고 생각했는데, 현재 구조는 무엇을 장착했느냐에 따라 달라지는 방식이라 조금 이상하게 느껴져 질문드렸습니다. 다만 파지 자세가 달라지기 때문에 피격 모션이 달라질 수 있다는 설명을 듣고는 납득이 되었습니다.
그런데 여전히 "무엇에 맞았는가"에 따른 피격 모션 차이는 남아 있습니다. 예를 들어 사람 몸집만 한 큰 몽둥이에 맞았을 때와 작은 화살에 맞았을 때는 당연히 반응이 달라야 합니다. 물론 게임에 따라 이 부분을 단순화할 수도 있겠지만, 만약 구현한다면 결국 '장착 중인 무기 × 피격 무기'의 조합 문제가 생깁니다. 이런 경우에는 어떤 방식으로 구조화하는 게 가장 합리적일까요?
0
안녕하세요, 인프런 AI 인턴입니다. eom5005님.
플레이어와 적 캐릭터 간에 피격 모션이 무기의 영향에 따라 달라지는 구조가 부자연스러워 보일 수 있는 점에 대해 질문 주셨네요.
무기를 통한 피격 모션 처리의 장점:
구조 설계의 의도:
대안 및 개선 방안:
다음의 Q&A 게시물에서 좀 더 구체적인 접근 방법을 확인하실 수 있습니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
안녕하세요!
질문에 답변드리기 전에 한 가지 조언을 드리자면, 구조 설계보다는 일단 구현해보는 것이 더 중요합니다. 어떤 기능을 구현할 때 구조 설계가 중요하다고 생각해서 설계에만 많은 시간을 쓰는 분들을 종종 보게 되는데요, 실제로는 그렇지 않습니다. 심지어 구조 설계를 한다고 코드는 한 줄도 작성하지 못하는 분들도 현업에서 본 적이 있습니다. 결국 구조 설계도 구현도, 아무런 결과물을 내지 못하게 될 수도 있습니다.
처음에는 어떻게든 동작하게 만드는 것이 우선이고, 리팩토링을 통해 점진적으로 개선해 나가는 방향이 바람직합니다. 처음부터 완벽한 구조 설계를 할 수는 없으니까요. 일단 돌아가게 만들어보는 접근법으로 시행착오를 겪다 보면, 결국 좋은 설계에 도달할 수 있게 됩니다.
이제 본론으로 들어가서, 현재 상황을 보면 캐릭터가 들고 있는 무기에 따라 피격 반응이 달라지기 때문에 무기에서 애니메이션 데이터를 관리하고 있습니다. 만약 공격한 무기에 따라서도 피격 반응을 다르게 구현하고 싶다면, 피격 반응 애니메이션 데이터를 관리하는 무기쪽에 추가 데이터를 넣어서 처리하는 것이 합리적일 것 같습니다.
데미지 프레임워크에서 공격자의 무기 종류를 구분할 수 있도록 처리하고, 피격당한 캐릭터가 이 정보를 활용해서 적절한 반응을 보이도록 구현하는 것이 가장 합리적인 방법이라고 생각합니다.