이것은 내가 Sketchfab을 통해 우주갓겜 브롤스타즈에서 긴빠이쳐온 악어소녀 알리다.
오늘 나는 이 존나 커여운 알리의 머리카락에 엘라스틴을 존나 때려 부어서
이렇게 만들어 볼 것이다.
당연한 말이지만 우린 Unity에서 제공하는 Hair System 같은 걸 쓰는 게 아니고
그냥 모델에 박혀있는 머리카락을 움직이는 것이기에 툼레이더 마냥 만드는 것은 불가능하다.
그럼 뭐 어떻게 만들거냐고?
뭐 잘은 모르겠지만 Unity에서는 Ragdoll이라는 기능을 제공하니 그걸 갖다 쓰면 되지 않을까?
캐릭터의 머리카락에 래그돌을 박아 넣는 것은 아주 간단하다.
1. 알리를 들어서
개지랄하지말고 각 머리카락 본에 한땀한땀 Rigidboy와 Collider, Character Joint를 박아넣어면 된다.
Ragdoll Builder 백날 써도 머리카락 같은 데 있는 본에는 안 붙으니까 그냥 노가다해라.
Character Joint에서 Connected Body 제대로 붙이는 거 잊지 말고, 저거 제대로 안 붙이면 Ragdoll 되자마자 똑 떨어져 나간다.
아무튼 잘 붙였으니 이대로 플레이 해보면???
애1미 시2발 ^^
모델이 구린건지, 아니면 animator가 붙어 있는 곳에 ragdoll을 붙이면 대참사가 열리는 건지,
정확한 이유는 모르겠으나 우리가 원하는 형태의 동작을 하질 않는다.
그렇다면 우리는 이걸 어떻게 처리해야 우리가 원하는 동작을 하게 만들 수 있을까?
이럴 때 도움이 되는 것이 UnityJigglePhysics 에셋이다.
우리는 Ragdoll를 쓰는 대신 적절한 외부 에셋을 활용해서 문제를 해결회피하도록 할 것이다
아까의 알리 모델로 돌아와서 JiggleRigBuilder 스크립트를 적당한 데에 넣어주고
Jiggle Rigs를 하나 추가, Root Transform으로 머리카락 본의 시작점을 지정해주고 마지막 Setting 값을 적당히 만져주면???????
머리카락이 꽤나 그럴싸하게 움직이기 시작한다.
머리카락이 다소 중력을 거스르고 위로 솟구쳐진 느낌이 있긴 하지만 이건 원본 모델링이 이 모양이라 어쩔 수 없는 부분이니 패스
다만 이럴 경우 문제가 하나 있는데 animator를 꺼서 Ragdoll이 되었을 때
머리카락이 자연스럽게 떨어지지 않고 공중부양을 시전한다는 문제가 생긴다.
이것을 해결하기 위해 스크립트를 날림으로 작성해보았다.
아주 간단한 동작을 하는 스크립트인데
한 줄 요약으로 Ragdoll 모드로 돌입함과 동시에 JiggleBoneBuilder를 꺼주고 Rigidbody를 활성화(?) 시키는 스크립트다.
요 스크립트를 오브젝트에 넣어주고 animator와 JiggleBoneBuilder를 등록해주면
머리카락이 자연스럽게 움직이는 게 아니라 자?연스럽게 움직이고 있는데 이걸 해결하는 방법은 아주 간단하다.
각 머리카락 본에 부착된 CharacterJoint 컴포넌트에 가서 Enable Projection을 활성화시키면 된다.
저게 무슨 기능이냐고? 실제 물리 연산을 좆까고 모델의 움직임을 무조건 설정된 한계치 밑으로 고정시켜버리는 기능이다.
최후의 최후에만 써야 하는 기능이라고 하는데 내 경우에는 Limit Spring을 백날 만져봐야 1도 영향이 없어서 그냥 썼다.
아무튼 이 기능까지 활성화시켜주면 Animator를 통해 움직이는 것은 물론 Ragdoll이 되었을 때도 완벽하게 자연스러운 머리카락의 움직임을 구현할 수 있다.
그렇다면 원작에서는 머리카락의 움직임을 어떻게 해결했을까? 뭐긴 뭐야 그냥 애니메이션에 구웠지 어딜 물리 연산으로 꼼수를 부리고 있어 정직하게 한땀한땀 애니메이션으로 만들란 말이다 ㅋㅋ
고수인척하는고수
걍 애셋을 사서 편하게 해결하고 싶다면 다이나믹본 이나 매지카2를 구매하시면됩니다.
매지카2는 안 써봐서 모르겠지만 다이나믹 본은 JigglePhysics랑 거의 유사하게 동작하더라
다본은 연산효율 족구리니 쓰지말고 일단 잡스 지원하는 매지카2를 쓰자.
+ 매지카2가 매지카1보다 낫긴한데 게임개발하면 장르에 따라 매지카1 선택하는게 나을수도 있음. 매지카1은 컴포넌트 단계에서부터 게임오브젝트 충돌 병합을 지원해줘서 성능저하 없이 옷갈아입히는게 수월히 되는데, 매지카2는 그냥 예제 코드 몇줄 던져놓고 구현은 알아서 하라고 함;;
글만 읽어도 재밌네 ㅋㅋㅋㅋㅋㅋㅋ
실베에서 보자구
고수