유니티

유니티 3D 간단한 RPG 게임 만들기 (4) - 1인칭 및 플레이어 애니메이션

Voitcon 2023. 6. 5. 13:45

안녕하세요 이번 4번째 글에서는 1인칭 설정과 플레이어 애니메이션을 만들도록 하겠습니다.

 

1인칭으로 설정하기에 플레이어 애니메이션은 간단하게 만들도록 하겠습니다.

 

공격 애니메이션
https://assetstore.unity.com/packages/3d/animations/melee-warrior-animations-free-165785


https://assetstore.unity.com/packages/3d/props/weapons/shield-sword-spear-178481

 

Shield,Sword,Spear | 3D 무기 | Unity Asset Store

Elevate your workflow with the Shield,Sword,Spear asset from Inari_Green. Find this & other 무기 options on the Unity Asset Store.

assetstore.unity.com

 

Melee Warrior Animations FREE | 3D 애니메이션 | Unity Asset Store

Elevate your workflow with the Melee Warrior Animations FREE asset from Kevin Iglesias. Find this & other 애니메이션 options on the Unity Asset Store.

assetstore.unity.com

실습에 필요한 애니메이션 에셋과 무기 에셋을 다운받아 줍시다.

프로젝트 폴더에서 Animator 와 animations 폴더를 생성하자

다운 받은 애니메이션은 Animations 폴더에 넣어줍시다.

무기는 Weapon 폴더에 있어 그대로 냅둡시다.

유니티짱 폴더에가서 animations 폴더를 Animations 폴더로 옮겨주자
해당 폴더로가서 unitychan 프리팹을 더블클릭하자.

유니티짱에게 무기를 붙여줍시다.

LeftHandMiddle4 아래에 방패를 알맞은 위치로 붙여주자
RightHandMiddle4에 무기를 알맞은 위치에 맞춰주자

손에 닿은것처럼 붙여주시면 됩니다.

animator 폴더로가서 우클릭 생성 애니메이터 컨트롤러를 생성하자

애니메이터의 이름은 playeranim 으로 합시다.

애니메이터를 생성하면 이런 화면이 뜰것입니다.
테스트를 위해 해당 폴더로 가서 삼각형 모양의 Shield@ 파일을 애니메이터로 끌어 당겨보자

삼각형 모양의 애니메이션을 애니메이터로 끌어당깁시다.

테스트를 위해 주황색 버튼을 더블클릭 하자

더블클릭 후에 루프시간 루프자세를 체크 합시다.

씬에가서 유니티짱 컴포넌트 Animator에 방금 생성한 애니메이터를 넣자

Animator 컨트롤러에 방금 생성한 playeranim 애니메이터를 넣읍시다.

 

동영상을 확인해보자

그럼 무기를 든 상태로 자연스럽게 애니메이션이 활성화되는걸 볼 수 있다.

기존의 애니메이션을 삭제하고 이제 만들어보자

해당 폴더로 가서 알맞은 애니메이션을 추가해보도록 합시다.

해당 폴더에서 위의 애니메이션을 추가해보자
위의 폴더에서 스플린트를 추가하자
파라미터로 이동하자

파라 미터로 이동후에 +버튼을 눌러 bool 값으로 Walk, Run을 생성해주고

Trigger로 Slide를 추가시켜줍시다.

추가로 해당 폴더에서 기본상태를 위한 wait도 추가하자
추가! Run00L을 삭제하고 해당 폴더에서 1H@Run01- Forward를 추가하자
wait를 우클릭후에 레이어 기본상태로 설정

레이어를 기본상태로 설정하여 플레이어가 대기하는 모션으로 시작하게 하겠습니다.

전환만들기로 위의 처럼 만들어보세요!

마우스 우클릭후에 전환만들기로 위에 처럼 만들면 됩니다.

그리고 Any State에서 Slide로 가는 화살표를 클릭하여 Conditions에 아까 파라미터로 추가한 Slide를 추가해줍시다.

+버튼 눌러 추가하시면 됩니다.

Wait에서 Run은 Walk 가 true 일때

반대로 Run 에서 Wait는 Walk가 false일때로 하면 됩니다.

Run에서 Sprint는 Run이 true일때

반대는 Run이 false 일때로 하면됩니다.

추가로 Slide 제외 종료시간과 고정 지속 시간을 모드 체크해제하자

Slide 제외 화살표에서 모두 종료 시간과 고정 지속 시간을 체크 해제하고 전환 지속 시간을 0.1 로 해줍니다.

그래야 애니메이션이 빠르게 전환됩니다.

Playermanager의 LeftRight 변수와 FrontBack 변수를 public으로 바꿔줍니다.

이제 스크립트를 짜봅시다. 그전에 Playermanager에서 수정을 해주세요.

스크립트를 추가하자

스크립트 폴더안에 PlayerAnim 스크립트를 추가해줍시다.

유니티짱의 리지드 바디를 수정하자

추가로 유니티짱의 리지드 바디 회전 고정 x,z값에 체크를 해줍시다. 가끔 애니메이션이 작동할때 회전하여

뒤집어지는 경우가 있는데, 그걸 방지하기 위해 회전 고정을 체크해줍시다.

추가로 1인칭으로 설정해보자

1인칭으로 설정해봅시다.

하이라키 창에서 Main Camera를 ctrl + c 해서 복사하고 해당 폴더의 모델링을 클릭하여 EYE_DEF 산하에 붙여넣기합니다.

그리고 기존의 하이라키 창의 Main Camera는 삭제를 합시다.

 

이제 애니메이션 코드를 짜줍시다.

 

주석을 잘 확인하고 직접 타이핑 해보자

추가로 1인칭 설정을 위해 PlayerManager 도 스크립트 수정을 하자

 

결과를 확인해보자!

결과를 확인해봅시다.

 

고생하셨습니다.

 

https://github.com/rhwjdtjs/Unity_Lec_from_Tistory

 

GitHub - rhwjdtjs/Unity_Lec_from_Tistory: check my Tistory

check my Tistory. Contribute to rhwjdtjs/Unity_Lec_from_Tistory development by creating an account on GitHub.

github.com

코드 참조 링크

 

간단한 RPG 게임 시리즈 진행 예정

(1) 유니티 설치하기 -> (완료)

(2) 유니티 기본 사용법 -> (완료)

(3) 플레이어 생성 및 이동 -> (완료)

(4) 플레이어 애니메이션 및 무기 들기 -> (완료)

(5) UI 다뤄보기 -> (6월 16일)

(6) 적 구현 -> (6월 19일)

(7) 스탯 구현 -> (6월 20일)

(8) 터레인 -> (6월 21일)

(9) 그래픽 및 메인화면 -> (6월 22일)