리뷰 환경
1. 해당 리뷰는 TPS 슈팅게임을 만든다.
2. 조준하는 위치를 가지고 있다.
사용 방법
1. Pakage Manager에서 'Animation Rigging' 설치하기
2. Rig 셋업하기
캐릭터(루트) 오브젝트를 선택한 상태에서
상단의 'Animation Rigging' - 'Rig Setup' 누르기
#프리팹에 'Rig Builder' 컴포넌트가 추가되고, 하위 오브젝트로 'Rig 1'이 추가된다.
#'Animation Rigging' - 'Bone Renderer Setup'을 눌러서, 셋업을 확인할 수 있다.
3. 오른손 IK 설정하기
3.1. 'Hand_R' 오브젝트 추가
'Rig 1'에 'Hand_R' 오브젝트를 추가한 후, 'Multi-Aim Constraint' 컴포넌트를 부착한다.
#오브젝트 이름은 각자 방법대로 명명해도 된다.
3.2. 'Hand_R' 속성 세팅
위의 컴포넌트에 오른손 transpos와 조준점 transpos를 할당해준후,
Aim Axis, Up Axis, World Up Type을 세팅해준다.
#다른 속성 값들의 설명은 생략..
4. 'Hand_L' 추가하기
위와 같은 방식으로 'Hand_L'을 생성한 후,
'Two Bone IK Constraint' 컴포넌트를 부착한다.
'Root', 'Mid', 'Top'에
각각 빗장뼈, 앞팔, 손을 부착하고
Target, Hint에 handle_position, IK_Hint 빈게임오브젝트를 생성 후 세팅
# handle_position은 왼손이 위치해야할 Transpos이며, 부모로 무기 루트 오브젝트를 가진다.
# IKHint는 왼팔을 벌리거나 접게 하는 보조 Transpos이며, 캐릭터 오브젝트 중 어딘가에 위치한다.(하이어라키 위치는 크게 상관없다.)
5. 'Spine' 3개도 추가
마찬가지로 척추 3개 오브젝트를 생성한 후,
'Multi-Aim Constrain' 컴포넌트를 부착한다.
(이때, spine의 개수가 2개이거나 최상위 본이 spine인 구조에 따라서, 3개가 아닌 2개로 해야 할 수도 있다.)
오른손과 같은 방식으로 세팅한 후,
웨이트에 점차 0.5, 0.75, 0.75를 세팅한다. (추천, 각자의 환경에 따라 다름)
에디터를 플레이 해보면, 동작하는 것을 확인할 수 있다.
6. 조정하기
플레이 해보면, 예제 영상과는 다르게 애니메이션이 맞지 않을 수 있다.
플레이 상태에서, 지금까지 작업한 Constrain 컴포넌트의 Settings의 값들을 조정해야 한다.
7. 웨이트 제어하기
상황에 따라서, 리깅의 영향 값을 조정해야할 때가 있다.
아래의 코드를 참고하자.
using UnityEngine.Animations.Rigging;
[SerializeField] MultiAimConstraint rig;
rig.weight = targetWeight;
버그
문제상황
'unity transform not found in human description' 에러 메시지 발생
해결방법
프리팹 오브젝트 안에 같은 이름의 오브젝트가 있다면,
발생하는 에러이므로 이름을 다르게 바꿔주자.
참고
(1) 프리팹 내에 '애니메이션용 본'과 '레그돌용 본'이 같이 있는 경우
본들의 이름이 겹쳐, 에러를 발생시킨다.
'레그들용 본' > 우클릭 > 'Select Children'으로 선택한 후,
인스펙터에서 일괄적으로 의미없는 이름으로 변경하거나,
이름을 변경하는 툴을 구해, 이름을 구분해주자.
관련 링크: https://github.com/hahahohohun/PublicCode/blob/main/README.md#ecnamingcs
#빌드를 할 때는 해당 스크립트를 삭제해야 한다.
(2) 본 내부에서 이름이 같은 경우
ex) '무기 프리팹의 이름'과 '무기 메쉬 오브젝트 이름'
(3) Animation Rigging 사용을 위해, 빈 게임 오브젝트 이름을 같게 지은 경우
Constrain 컴포넌트를 추가하기 위해 게임오브젝트를 추가했을 때,
본의 이름과 같을 수 있다. 이 또한 이름이 같은 버그의 경우
ex) spine
에러 메시지에서, 오류가 되는 본의 이름을 알려주니 참고하자.
#참고
https://www.youtube.com/watch?v=luBBz5oeR4Q (사용방법)
https://forum.unity.com/threads/animation-rigging-multi-aim-constraint-jitter.864574/ (조준이 버벅일 때)https://itcn.blog/p/182640113.html (사라짐)(중국인이 버그를 해결한 블로그 글)
#에러 메시지와 원인 및 해결방법이 달라서, 디버그에 많이 고생한 케이스이다.
'포트폴리오 > TPS 슈팅게임 (ShotsFired)' 카테고리의 다른 글
빌드시 의도한 해상도가 나오지 않을 때 (0) | 2022.09.01 |
---|---|
[Line Renderer] 라인렌더러가 버벅이며 그려질 때 (0) | 2022.09.01 |
[Skinned Mesh Renderer] 물체가 카메라와 가까울 때, 사라지는 현상 (0) | 2022.09.01 |