Unity 6 상체 애니메이션: 런+활쏘기 동시 구현! 꿀팁 대방출!
애니메이션 컨트롤러 설정 가이드 (중학생 눈높이 설명)
이 튜토리얼에서는 애니메이션 컨트롤러를 설정하는 방법을 배울 거야. 이걸 배우고 나면 캐릭터가 움직이면서 활을 겨누는 것처럼 여러 가지 애니메이션을 자연스럽게 연결할 수 있게 될 거야.
1. 준비물
- 유니티 (Unity): 게임을 만드는 프로그램
- Synty Base Locomotion Animation 팩: 캐릭터가 걷고, 뛰고, 앉는 등 기본적인 움직임을 담당하는 애니메이션 팩
- Bow Combat Animation 팩: 활을 쏘는 애니메이션 팩
- 새로운 3D URP 프로젝트: 유니티에서 새로 만든 빈 프로젝트
2. 캐릭터 불러오기
-
캐릭터와 타겟 배치:
Animation Base locomotion폴더 >samples>prefabs폴더에서Target을 장면(Scene)에 끌어다 놓자. 이건 나중에 캐릭터가 바라볼 곳이야.- 같은 폴더에서
Psychic캐릭터를 장면으로 끌어다 놓자. (폴리곤 캐릭터도 있지만, 여기서는 사이킥 캐릭터로 진행할 거야.)
-
캐릭터 설정 변경:
- 계층(Hierarchy) 창에서
Player게임 오브젝트를 선택하고 펼쳐서Psychic Synty Character를 선택해. - 인스펙터(Inspector) 창에서
Always Strafe를 꺼줘. 이렇게 하면 카메라를 향해 걸어갈 수 있어서 캐릭터를 더 잘 볼 수 있어.
- 계층(Hierarchy) 창에서
-
카메라 삭제:
- 계층 창에서
Main Camera를 삭제해. 이제 캐릭터가 카메라보다 우선순위를 가지게 돼서 플레이 버튼을 눌렀을 때 캐릭터 움직임을 바로 볼 수 있어.
- 계층 창에서
-
플레이 테스트:
- 플레이 버튼을 누르면 캐릭터가 움직이고, 앉고, 뛰는 등 기본적인 움직임을 할 수 있을 거야. 마우스 휠 버튼을 누르면 타겟을 바라보게 돼.
3. 활 애니메이션 레이어 만들기
이제 캐릭터가 활을 쏘는 애니메이션을 추가해 볼 거야.
-
애니메이션 컨트롤러 열기:
- 장면에서
Psychic Synty Character를 선택하고, 인스펙터 창에서AC Controller를 클릭하면 애니메이션 컨트롤러가 열릴 거야.
- 장면에서
-
새로운 레이어 추가:
- 애니메이터(Animator) 창 왼쪽 상단에 있는
Layers탭으로 가자. +버튼을 눌러서 새 레이어를 만들고 이름을Bow aim이라고 지어줘. (이름은 나중에 쓸 스크립트와 똑같아야 해!)
- 애니메이터(Animator) 창 왼쪽 상단에 있는
-
활 애니메이션 넣기:
Animation bow Combat폴더 >animations>Psychic>Neutral Standing>Idle폴더로 가서 활을 들고 있는Idle애니메이션을 찾아서Bow aim레이어로 끌어다 놓자.- 이 애니메이션이 기본으로 재생되도록 설정돼.
-
레이어 활성화:
Bow aim레이어 옆에 있는 톱니바퀴 아이콘을 클릭해서 설정으로 들어가.Weight를0에서1로 바꿔줘. 이렇게 하면 이 레이어가 다른 모든 애니메이션을 덮어쓰게 돼.
-
플레이 테스트:
- 플레이 버튼을 누르면 캐릭터가 활 애니메이션만 재생하면서 이상하게 움직일 거야. 이건 모든 애니메이션을 덮어쓰기 때문이야.
4. 상체만 애니메이션 적용하기 (Avatar Mask)
활 애니메이션을 캐릭터의 상체에만 적용해서 하체는 움직이고 상체는 활을 쏘는 것처럼 보이게 할 거야.
-
Avatar Mask 만들기:
- 애셋 브라우저(Asset Browser)에서 마우스 오른쪽 버튼을 누르고
Create>Animation>Avatar Mask를 선택해. - 이름을
mask_upper_body라고 지어줘.
- 애셋 브라우저(Asset Browser)에서 마우스 오른쪽 버튼을 누르고
-
마스크 설정:
mask_upper_body를 선택하면 오른쪽에 캐릭터가 보일 거야.- 다리(
Legs), 발(Feet IK), 그리고 맨 아래 동그라미(Root)를 클릭해서 비활성화시켜. (초록색이 아닌 회색으로 만들어) - 이제 상체만 초록색으로 보일 거야.
-
마스크 적용:
- 다시 애니메이터 창에서
Bow aim레이어의 톱니바퀴 아이콘을 클릭해. Mask슬롯에 방금 만든mask_upper_body를 끌어다 놓자.
- 다시 애니메이터 창에서
-
플레이 테스트:
- 플레이 버튼을 누르면 캐릭터의 하체는 움직이고 상체는 활 애니메이션을 재생하는 걸 볼 수 있을 거야.
5. 스크립트로 애니메이션 제어하기
이제 실제로 활을 겨누고 쏘는 동작을 제어할 스크립트를 추가할 거야.
-
스크립트 생성 및 복사:
Animation Base locomotion폴더 >samples>scripts폴더로 가.- 마우스 오른쪽 버튼을 누르고
Create>Scripting>New Mono Behavior Script를 선택해. - 스크립트 이름을
Bow aim layer controller라고 지어줘. - 스크립트를 열어서 제공된 코드를 전부 복사해서 붙여넣어. (스크립트 내용은 설명란에 있어.)
- 이 스크립트는 오른쪽 클릭으로 겨누고, 왼쪽 클릭으로 쏘는 기능을 추가해 줄 거야.
-
스크립트 컴포넌트 추가:
- 계층 창에서
Psychic Synty Character를 선택해. Add Component버튼을 누르고Bow aim layer controller스크립트를 추가해.
- 계층 창에서
-
스크립트 설정:
- 스크립트에 필요한 정보들을 채워줘야 해.
Input Reader: 캐릭터의Input Reader를 끌어다 놓아.Animator: 캐릭터의Animator컴포넌트를 끌어다 놓아.Camera Transform:Main Camera를 끌어다 놓아.
- 스크립트에 필요한 정보들을 채워줘야 해.
-
애니메이션 컨트롤러 파라미터 추가:
- 애니메이터 창에서
Parameters탭으로 가. +버튼을 눌러서 다음 파라미터들을 추가해줘.Boolean:is aimingBoolean:is drawingTrigger:fire
- 애니메이터 창에서
-
활 애니메이션 추가 (Equip):
Animation bow Combat폴더 >animations>Psychic>Neutral Standing>Idle폴더에서 활을 장착하는Bow equip애니메이션을 찾아서 애니메이터의Bow aim레이어에 추가하고equip이라고 이름을 지어줘.equip애니메이션에서Idle애니메이션으로 넘어가는 전환(Transition)을 만들고,Exit Time을 켜줘.
-
활 장착하기:
- 장면에서 다른 캐릭터가 들고 있는 활을 복사해서 (
Ctrl+C) 캐릭터의Prop_L뼈에 붙여넣기 (Ctrl+V) 해. - 붙여넣은 활의 위치와 회전을 모두
0으로 맞춰줘. Psychic Synty Character의Bow aim layer controller스크립트에서Equipment Visuals에 방금 붙여넣은 활을 끌어다 놓아.Blend Equip Speed를10으로 바꿔주면 활이 더 부드럽게 나타날 거야.
- 장면에서 다른 캐릭터가 들고 있는 활을 복사해서 (
-
플레이 테스트:
- 플레이 버튼을 누르고
F키를 누르면 활이 나타나고equip애니메이션이 재생된 후Idle애니메이션으로 전환될 거야.
- 플레이 버튼을 누르고
6. 활 겨누고 쏘는 애니메이션 설정
이제 실제로 활을 겨누고 쏘는 애니메이션들을 연결해 보자.
-
애니메이션 추가:
Animation bow Combat폴더 >Animations>Psychic>Neutral Standing>Aim폴더에서 다음 애니메이션들을Bow aim레이어에 추가하고 이름을 지어줘.Aiming Undrawn->aim idleAiming to Drawn->drawAiming Drawn->drawnAiming Drawn Shaking->shake
-
애니메이션 전환 설정:
aim idle로 전환:bow idle에서aim idle로 전환할 때is aiming이true일 때 (오른쪽 클릭 시)has Exit Time을 꺼줘.
bow idle로 복귀:aim idle에서bow idle로 전환할 때is aiming이false일 때 (오른쪽 클릭 떼기)has Exit Time을 꺼줘.
draw로 전환:aim idle에서draw로 전환할 때is drawing이true일 때 (왼쪽 클릭 시)has Exit Time을 꺼줘.
drawn으로 전환:draw에서drawn으로 전환할 때has Exit Time을 켜줘. (draw 애니메이션이 끝나야 다음으로 넘어감)
shake로 전환:drawn에서shake로 전환할 때has Exit Time을 켜줘.
bow idle로 복귀 (임시):shake에서bow idle로 전환할 때is drawing이false일 때has Exit Time을 꺼줘.
-
카메라 설정 변경:
Player>PF_Synty Camera에서Camera Horizontal Offset을0.3으로,Hide Cursor를 체크해줘.
-
플레이 테스트:
- 플레이 버튼을 누르고
F키로 활을 장착하고, 오른쪽 클릭으로 겨누고, 왼쪽 클릭을 누르고 있으면 활을 당기는 애니메이션이 재생될 거야.
- 플레이 버튼을 누르고
7. 활 쏘는 애니메이션 추가
이제 실제로 활을 쏘는 애니메이션을 연결해 보자.
-
쏘는 애니메이션 추가:
Animation bow Combat폴더 >animations>Shoot폴더에서Bow Stand shoot to aiming애니메이션을 찾아서Bow aim레이어에 추가하고shoot이라고 이름을 지어줘.
-
애니메이션 전환 설정:
shoot으로 전환:shake에서shoot으로 전환할 때fire트리거가 발생하면has Exit Time을 꺼줘.drawn에서도shoot으로 전환할 수 있도록 설정해줘. (이건 선택 사항이지만, 더 빠르게 쏠 수 있게 해줘.)
aim idle로 복귀:shoot에서aim idle로 전환할 때has Exit Time을 켜줘. (shoot 애니메이션이 끝나야 다음으로 넘어감)
-
플레이 테스트:
- 플레이 버튼을 누르고
F키로 활을 장착하고, 오른쪽 클릭으로 겨눈 상태에서 왼쪽 클릭을 누르고 있다가 떼면 활을 쏘는 애니메이션이 재생될 거야.
- 플레이 버튼을 누르고
8. 캐릭터 교체 및 프리팹 만들기
이제 우리가 만든 캐릭터를 다른 캐릭터로 바꾸고, 이걸 프리팹으로 만들어 재사용하는 방법을 알아보자.
-
캐릭터 교체:
Synty Psychic Character Creator툴로 만든 엘프 궁수 캐릭터를 장면으로 끌어다 놓자.- 기존 캐릭터를 삭제하고, 새로 가져온 캐릭터의 메쉬와 스켈레톤을 기존 캐릭터의 위치에 맞게 옮겨줘.
- 활이 기존 캐릭터에 붙어있었으니, 활을 다시 새 캐릭터의
Prop_L뼈에 붙여줘야 해. Bow aim layer controller스크립트의Equipment Visuals에 새 캐릭터의 활을 다시 연결해줘.
-
프리팹 만들기:
- 계층 창에서 완성된 캐릭터를 애셋 브라우저로 끌어다 놓으면 프리팹이 만들어져.
- 이제 이 프리팹을 다른 장면에서도 쉽게 사용할 수 있어.
마무리
이제 캐릭터 애니메이션 컨트롤러 설정, 상태 머신, 그리고 Avatar Mask를 사용해서 상체 애니메이션을 블렌딩하는 방법을 배웠어. 이걸로 캐릭터가 움직이면서 활을 겨누고 쏘는 등 다양한 동작을 자연스럽게 만들 수 있게 되었지!
혹시 활과 화살을 실제로 날아가게 하는 방법이나, 더 많은 애니메이션을 추가하는 방법에 대해 알고 싶다면 댓글로 알려줘!