유니티에서 캐릭터 Movement 관련 코드를 하나의 스크립트로 처리하자니 스파게티 코드가 될 거 같은데, 클래스 여러 개 나눠서 상태 패턴으로 구현해도 괜찮을까요? 예를 들어서 걷기, 달리기, 고속 달리기, 점프 등으로 나누는 경우까지도 상태 패턴으로 나눠도 괜찮을지 궁금합니다. 아니면 공격, 회피, 이동 등으로 크게 나누고 이동 안에서 슬라이딩, 점프, 평행 이동 등을 구현해야 하는 것일까요? 만약 제 질문에서 상태 패턴에 대해 잘못 이해한 것 같은 느낌이 든다면 알려주세요. 다시 공부해오겠습니다.
(혹시 몰라 남기는 이동에 관련한 간단한 목표: 걷기, 달리기, 고속 달리기 중 반대 방향으로 이동을 틀었을 때 나오는 모션이 다르며, 경사로에서 달리기를 시행할 시 슬라이드로 대체되는 등 유연하고 자연스러운 움직임 구현, 마지막으로 땅과 점프 중 공격시 서로 다른 형태의 공격이 나가는 경우)
질문을 디테일하게 설명하려 하다보니 조금 길어졌는데 핵심은 아래와 같습니다.
플레이어 캐릭터 이동을 걷기, 달리기, 점프 등등 자잘한 움직임 하나하나 상태 패턴으로 나눠도 괜찮은 구현일까요?
Mugen CLSN파일 보면, 대기(Stand)상태, 앉기(Crouch)상태, 그리고 대기에서 앉기(StandToCrouch)도 있고 역인 CrouchToStand도 있음. 대전게임이라 그럴수도 있지만 자잘자잘한 상태도 충분히 가능하다고 봄
감사합니다. 저도 참고해봐야겠어요
괜찮은 생각임 캐릭터가 하나의 액션을 수행할 수 있다가 기본베이스니까
답변 감사합니다. 제가 제대로 이해한 것 같아서 다행이네요
좋은 생각임. 게임의 행동 패턴 등을 분석해서 중요 동작을 정하고 그들의 조합으로 다양한 행동을 도출할 수 있으면 매우 효율적일 듯.
감사합니다. 이제 패턴을 어떻게 활용할지 고민해봐야겠어요
언리얼의 캐릭터 무브먼트 컴포넌트도 날기 수영 걷기 움직이지 않음 이렇게 여러 상태로 구분함
언리얼의 경우도 그렇게 처리가 이루어지는군요. 참고되었습니다. 감사합니다
상태를 크게크게 나누면 안에서 또 분기가 발생하면서 결국 복잡해지니 난 상태를 자잘하게 나누는 걸 선호함
너무 자잘할까봐 걱정된다면 상태를 크게 나누되, 그 안에 또 다른 작은 상태들이 존재하는 식으로 가도 좋을 듯 상태: 낚시일 때 던지기, 감기, 들어올리기라는 서브 상태를 또 가진 식