2025. 4. 26. 22:01ㆍ자기계발
본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
오늘은 언리얼 엔진에서 기본 제공하는 Swimming 상태를 활용해 캐릭터의 수영 애니메이션을 제작했다.
처음에는 별도로 수영 시스템을 새로 구축해야 하나 고민했는데, 언리얼 캐릭터 무브먼트 컴포넌트 안에 이미 'Swimming'이라는 상태가 준비되어 있다는 걸 알게 되었다. Water Volume에 들어가면 자동으로 상태가 전환되는 구조였고, 이걸 활용하면 별도의 복잡한 시스템 없이 수영 이동과 애니메이션 연동 작업이 가능했다.
우선, 캐릭터가 Water Volume 안에 진입하면 MovementMode가 Swimming으로 바뀌는 것을 감지해, 애니메이션 블루프린트에서 이 상태에 맞는 수영 애니메이션을 재생하도록 설정했다. Swimming 모드일 때는 지상 이동과는 다른 블렌드 스페이스를 사용했고, 캐릭터의 이동 속도나 입력 방향에 따라 자연스럽게 수영 애니메이션이 전환되도록 구성했다. 특히, 기본 Swimming 상태를 활용하면 자동으로 중력과 부력 비슷한 처리가 되어 있어서, 별도로 물리 세팅을 복잡하게 다룰 필요가 없었다.
다만 캐릭터가 물에 얼마나 잠겼는지를 체크해서 상태를 전환할 필요가 있었는데, 이 부분을 구현할 때는 고민이 좀 있었다. 강의에서는 Tick마다 Raycast를 쏴서 캐릭터 머리 위에 물이 있는지 체크하는 방식으로 구현했다. 라인 트레이스를 통해 수면을 감지하고, 결과에 따라 잠수/비잠수 상태를 판별했다. 하지만 이 방식은 매 프레임마다 Raycast를 쏴야 했기 때문에, 성능 부담이 있을 수 있다는 점이 아쉬웠다.
특히 멀티플레이어 환경이나, 많은 캐릭터가 동시에 물에 들어가는 상황에서는 부하가 급격히 늘어날 수 있다는 생각이 들었다. 강사분도 이 방법은 실무에서 좋지 않으니 다른 방법을 사용해야 된다고 하셨다. collision이나 z위치의 비교를 통해서 수면 상태를 확인 해야 될 것 같다.
이번 수영 시스템을 제작하면서 느낀 것은, 언리얼이 기본적으로 제공하는 이동 모드(걷기, 달리기, 수영 등)를 잘 이해하고 활용하면 개발이 훨씬 수월해진다는 점이다. 괜히 모든 걸 처음부터 직접 만들려고 하기보다는, 기본을 잘 파악하고 필요한 부분만 수정하고 확장하는 게 훨씬 효율적이라는 걸 다시 한번 깨달았다.
Abit.ly 다운받기
abit.ly
'자기계발' 카테고리의 다른 글
패스트캠퍼스 환급챌린지 27일차 : RPG 전투 플레이 프로젝트로 배우는 언리얼 엔진 5 게임 개발 강의 후기 (0) | 2025.04.27 |
---|---|
[클래스101] 구글 애드센스로 평생 월 100만원 만드는 방법 4일차 (0) | 2025.04.26 |
[클래스101] 구글 애드센스로 평생 월 100만원 만드는 방법 3일차 (0) | 2025.04.25 |
패스트캠퍼스 환급챌린지 25일차 : RPG 전투 플레이 프로젝트로 배우는 언리얼 엔진 5 게임 개발 강의 후기 (0) | 2025.04.25 |
패스트캠퍼스 환급챌린지 24일차 : RPG 전투 플레이 프로젝트로 배우는 언리얼 엔진 5 게임 개발 강의 후기 (0) | 2025.04.24 |