Inflearn brand logo image

인프런 커뮤니티 질문&답변

eom5005님의 프로필 이미지
eom5005

작성한 질문수

실전! 언리얼 소울라이크 개발: A to Z

적 캐릭터의 플레이어 캐릭터 공격 행동 구현

Hit Reaction 설계

작성

·

45

·

수정됨

0

플레이어 캐릭터와 적 캐릭터 모두 공통으로 피격 모션을 사용하는 건 이해했는데, 이 로직이 무기 쪽에 들어가 있다 보니 캐릭터가 어떤 무기를 들고 있느냐에 따라 피격 모션이 달라지는 구조가 조금 부자연스럽게 느껴집니다. 이 부분은 의도된 설계인가요?

답변 3

1

Spector님의 프로필 이미지
Spector
지식공유자

안녕하세요!

설계 의도를 말씀드리기 전에, 캐릭터가 들고 있는 무기에 따라 피격 애니메이션을 다르게 처리하는 이유를 먼저 생각해보겠습니다. 예를 들어 캐릭터가 몽둥이로 맞는다고 상상해보세요.

어떤 무기를 들고 있느냐에 따라 당연히 반응이 달라집니다. 한손검과 방패를 들고 있을 때와 창을 들고 있을 때의 파지 자세가 다른데, 피격 반응이 똑같을 수는 없겠죠?

그렇다면 캐릭터가 어떤 무기를 들고 있는지에 따라 피격 애니메이션을 다르게 처리해야 한다는 것을 확인했습니다.

이제 중요한 질문은, 이 애니메이션을 어디서 처리하는 것이 합리적이고 관리하기 좋을까요?

만약 캐릭터에서 처리한다면 어떨까요? 새로운 무기가 추가될 때마다 캐릭터에 해당 애니메이션들을 추가해야 합니다. 그뿐만 아니라 피격을 처리할 때마다 현재 캐릭터가 어떤 무기를 들고 있는지 확인해서 그에 맞는 애니메이션을 재생하는 코드가 필요합니다. 무기가 늘어나면 늘어날 수록 코드는 점점 더 길어지고 복잡해 지겠죠.

하지만 무기에서 애니메이션 데이터를 처리한다면? 그냥 해당 무기의 애니메이션을 재생하면 끝입니다.

어느 쪽이 더 효율적일까요? 불필요한 분기 코드도 필요 없고, 새로운 무기가 추가될 때마다 데이터 관리도 훨씬 용이합니다.

그래서 대부분의 게임에서 이 방식을 사용하고 있습니다.

0

eom5005님의 프로필 이미지
eom5005
질문자

무엇에 맞았느냐에 따라 피격 모션이 달라져야 한다고 생각했는데, 현재 구조는 무엇을 장착했느냐에 따라 달라지는 방식이라 조금 이상하게 느껴져 질문드렸습니다. 다만 파지 자세가 달라지기 때문에 피격 모션이 달라질 수 있다는 설명을 듣고는 납득이 되었습니다.

 

그런데 여전히 "무엇에 맞았는가"에 따른 피격 모션 차이는 남아 있습니다. 예를 들어 사람 몸집만 한 큰 몽둥이에 맞았을 때와 작은 화살에 맞았을 때는 당연히 반응이 달라야 합니다. 물론 게임에 따라 이 부분을 단순화할 수도 있겠지만, 만약 구현한다면 결국 '장착 중인 무기 × 피격 무기'의 조합 문제가 생깁니다. 이런 경우에는 어떤 방식으로 구조화하는 게 가장 합리적일까요?

Spector님의 프로필 이미지
Spector
지식공유자

안녕하세요!

질문에 답변드리기 전에 한 가지 조언을 드리자면, 구조 설계보다는 일단 구현해보는 것이 더 중요합니다. 어떤 기능을 구현할 때 구조 설계가 중요하다고 생각해서 설계에만 많은 시간을 쓰는 분들을 종종 보게 되는데요, 실제로는 그렇지 않습니다. 심지어 구조 설계를 한다고 코드는 한 줄도 작성하지 못하는 분들도 현업에서 본 적이 있습니다. 결국 구조 설계도 구현도, 아무런 결과물을 내지 못하게 될 수도 있습니다.

처음에는 어떻게든 동작하게 만드는 것이 우선이고, 리팩토링을 통해 점진적으로 개선해 나가는 방향이 바람직합니다. 처음부터 완벽한 구조 설계를 할 수는 없으니까요. 일단 돌아가게 만들어보는 접근법으로 시행착오를 겪다 보면, 결국 좋은 설계에 도달할 수 있게 됩니다.

이제 본론으로 들어가서, 현재 상황을 보면 캐릭터가 들고 있는 무기에 따라 피격 반응이 달라지기 때문에 무기에서 애니메이션 데이터를 관리하고 있습니다. 만약 공격한 무기에 따라서도 피격 반응을 다르게 구현하고 싶다면, 피격 반응 애니메이션 데이터를 관리하는 무기쪽에 추가 데이터를 넣어서 처리하는 것이 합리적일 것 같습니다.

데미지 프레임워크에서 공격자의 무기 종류를 구분할 수 있도록 처리하고, 피격당한 캐릭터가 이 정보를 활용해서 적절한 반응을 보이도록 구현하는 것이 가장 합리적인 방법이라고 생각합니다.

0

안녕하세요, 인프런 AI 인턴입니다. eom5005님.

플레이어와 적 캐릭터 간에 피격 모션이 무기의 영향에 따라 달라지는 구조가 부자연스러워 보일 수 있는 점에 대해 질문 주셨네요.

  1. 무기를 통한 피격 모션 처리의 장점:

    • 무기별로 다른 피격 모션을 통해 게임의 다양성과 전략성을 높일 수 있다는 장점이 있습니다. 이는 게임에서 무기의 중요성을 강조하고, 플레이어가 무기에 따라 다른 전략을 구사할 수 있게 합니다.
  2. 구조 설계의 의도:

    • 일반적으로 언리얼 엔진에서는 피격 모션이 캐릭터의 상태나 애니메이션 블루프린트에서 관리되곤 합니다. 그러나 무기를 통해 처리하는 것은 특정 게임 디자인 의도를 담고 있을 수 있습니다.
    • 개발자 또는 디자이너가 무기별로 다양한 피격 스타일을 강조하고자 할 때 이러한 설계를 선택할 수 있습니다.
  3. 대안 및 개선 방안:

    • 피격 모션의 통일이 필요하다고 느껴진다면, 캐릭터 클래스에서 피격 애니메이션을 직접 관리하거나, 상태 머신을 이용하여 무기와 무관하게 통일된 피격 반응을 구현하는 방법을 고려해 볼 수 있습니다.
    • 또한, 무기와 별도로 피격 전용 애니메이션 블루프린트를 작성하고, 무기의 상태에 따라 그 블루프린트를 결정하는 방식으로 구현 가능할 것입니다.

다음의 Q&A 게시물에서 좀 더 구체적인 접근 방법을 확인하실 수 있습니다:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

eom5005님의 프로필 이미지
eom5005

작성한 질문수

질문하기