안녕하세요!
이번에는 무기 회전 처리를 개선했던 일에 관해 써보려 합니다.
저희 게임에는 다양한 종류의 무기가 등장하는데, 무기와 애니메이션에 따라서 회전 각도가 다르게 그려져 있습니다.
무기를 원하는 방향으로 들기 위해서는 스프라이트의 회전 각도와 flip등을 계산해야 했는데
별 다른 시스템이 없다보니 그때그때 하드코딩을 하면서 작업을 해왔습니다.
그러던 중, 투척 무기를 구현하다가 기존 코드가 너무 복잡하여 계산을 쉽게 도와주는 시스템을 만들기로 했습니다.
본 시스템
먼저 무기 애니메이션마다 본을 심을 수 있게 했습니다.
회전 및 오프셋을 추적하는 용도이고, 시스템이 각도를 계산할 때 참고하게 됩니다.
덕분에 무기마다 존재하던 이미지와 관련된 회전값 필드들이 사라지고 코드가 전체적으로 더 단순해졌습니다.
아래의 기능들은 모두 본 시스템의 정보를 바탕으로 구현되었습니다.
모션 블랜딩 기능
원래는 회전값이 관리되지 않았기 때문에 대쉬나 피격으로 인해 공격 모션이 캔슬되는 상황에서 이미지가 튀는 현상이 발생했습니다.
하지만 모션 블랜딩 기능 구현으로, 서로 다른 각도의 이미지더라도 부드럽게 연결됩니다.
튀는 현상이 사라졌습니다.
회전 관성 표현
공격이 캔슬되었을 때, 회전 관성에 따른 회전 속도를 표현해주는 기능입니다.
본 시스템으로 코드가 단순해진 덕분에 구현하게 되었습니다.
절차적 애니메이션
저희 게임에 등장하는 창병의 경우, 찌르는 방향을 표현하기 위해 이미지가 캐릭터와 창으로 분리되어있습니다.
창을 들고 무언가를 찌른다면 일반적으로 양손을 사용할텐데, 창의 각도에 따라 반대쪽 팔의 모습이 바뀌지 않으면 보기에 어색합니다.
기존엔 반대쪽 팔을 그냥 슬쩍 생략했었는데, 본 시스템과 기존에 만들었던 동적인 픽셀 오브젝트 효과를 결합해 이를 표현할 수 있게 되었습니다.
읽어주셔서 감사합니다!
+
혹시 저희 게임에 관심이 있으시다면 스팀 페이지(링크)에 방문해주세요!
옛날 개발일지도 약간 다듬어서 올리고 있습니다.
와우 - dc App
와우 디테일 변태 - dc App
쓰앵님 제가 잘 이해를 못하겠는데 그럼 특정 각도 별로 스프라이트가 따로 있고 이게 어느정도까지는 뼈 회전으로 구현하다가 특정각도에 도달하면 그 스프라이트로 변하는 형식인가요?
그 반대라고 생각하시면 됩니다. 스프라이트가 변했을 때, 뼈 회전을 사용해서 각도를 맞춰주는 것입니다. 6번 그림을 보시면 이해하실 수 있을 것 같습니다.
오 이해했습니다 감사합니다
이게 도트그래픽이지