원래 사용하려는 캐릭터 Asset에 애니메이션이 다 있는줄알고 받았는데 없었다.
창의적인 감자인 나는 내가 bone의 rotation값을 다 만져서 애니메이션 작업을 해야하나 고민을 했다.
그러다 알게된 Mixamo, 어도비에서 서비스하는 3D 캐릭터의 애니메이션 적용 사이트다.
다양한 캐릭터 모델과 애니메이션을 제공하고 있어 많은 사람들이 이용하는데 이곳에서 내 캐릭터의 애니메이션을 유니티에 적용할 수 있다!
접속해서 우측 상단의 UPLOAD CHRACTER 버튼을 누르면 위와같이 창이 뜨고, 드래그 하거나 Select Charactor file을 클릭하면 직접 파일을 선택할 수 있다.
나의 경우 fbx파일이 있어 넣어주었고, 잠깐 로딩창이 뜨는데 기다리면 된다, 이후 AUTO-RIGGER라는 창이 뜨면 캐릭터 세팅을 간단하게 해주면 된다. 이 내용 관련해서는 해당 블로그 게시글 참고하면서 따라해보려고 하였다.
근데..
난 왜 안뜨는데..
Sorry, unable to map your existing skeleton. Plaese check best practice for using the Auto-Rigger and upload again. 이라는 문구만 계속 뜨고 중간에 주황 글씨 부분을 클릭해보아도 adobe의 매뉴얼만 계속 뜨니 환장할 지경이었다.
이 내용에 대해서 구글링도 해보았는데, 대부분은 영어로 된 결과고 한국어로 된 결과가 2개 있어 확인해보니 blender 프로그램을 사용하여 해결하는 방법이 있었다.
나는 창의적인 감자니까 직접 blender를 깔고 해결해 보려고 했는데.. 1시간정도 만져보다 포기했다.
그래서 어떻게 했나면
사용하고자 하는 애니메이션 클릭 후 그냥 다운로드 받았고 내 유니티 프로젝트에 넣어주었다.
애니메이션 파일을 프로젝트에 넣어서 Inspector > Rig > Animation Type을 Humanoid로 해주고 Apply 누르면 끝!
점프와 같은 반복이 없는 애니메이션은 체크할 필요 없지만 달리기, 걷기와 같은 모션은 Loop Time을 체크해줘야 계속 재생된다.
Parameter는 bool값으로 만들어줘서 기본 애니메이션에서 true가 될때마다 바뀔수있게 체크해주었으며 각 트랜지션마다 HasExitTime 체크는 해제해주었다.
public class PlayerController : MonoBehaviour
{
private Animator animator;
public void OnMove(InputAction.CallbackContext context)
{
if (context.phase == InputActionPhase.Performed)
{
animator.SetBool("IsMove", true);
}
else if (context.phase == InputActionPhase.Canceled)
{
animator.SetBool("IsMove", false);
}
}
}
각 동작에 맞는 메서드에서 애니메이션이 전환될 수 있도록 해당 동작이 실행되는 동안 Animator의 Bool값을 변경할 수 있게 해주면 정상적으로 작동!
'Unity > Unity Study' 카테고리의 다른 글
| [Unity] 3D Surviver 팀 프로젝트 중, Player Animation 일부 문제 (bool, trigger) (0) | 2025.03.21 |
|---|---|
| [Unity] 3D Surviver 팀 프로젝트 중, 상태(Stat) UI (0) | 2025.03.20 |
| [Unity] 3D Surviver 팀 프로젝트 중, 트러블슈팅 : 달리기 및 스탯변화 (0) | 2025.03.18 |
| [Unity] 3D Surviver 팀 프로젝트 중, 스탯 부분 리팩토링 (2) | 2025.03.18 |
| [Unity] 3D Surviver 팀 프로젝트 중, 다른 타입으로 발생한 null (0) | 2025.03.14 |