(1장 참고)
유니티 프로젝트를 2D URP로 생성시 해당 오브젝트에 Sprite Renderer 컴포넌트가 추가된다.
우선 플레이어가 방향 전환을 할 수 있도록 만들어주자
1.플레이어 좌 우 반전

위 컴포넌트에 Flip의 X,Y 축을 통해 상하좌우 반전을 줄 수 있다. Flip을 이용하여 캐릭터의 방향을 설정하자.


LateUpdate | 프레임이 종료 되기 전 호출되는 함수 - (자세한건 C#,Unity 카테고리에서 설명) |
2. 셀 애니메이션 설정
셀 애니메이션이란? - 여러개의 Sprite를 순차적으로 보여주는 방식




Player 오브젝트에도 Animator를 추가된 모습
해당 Animator(Animation Controller) 에 들어가서 상태변경이 가능하다.
Animator - 애니메이션을 상태로 관리하는 컴포넌트 (Animator 컴포넌트는 씬에서 게임 오브젝트에 애니메이션을 지정하는 데
사용합니다. 어떤 애니메이션 클립을 사용할 것인지, 언제 어떻게 블렌드 및 전환할 것인지를 정의하기 위해)
1. Controller - 스테이트 머신(동작 표현 방법)과 애니메이션 클립을 갖는 애셋
2. Avatar - 3D 아바타나 휴머노이드등의 모델파일들을 유니티에서 다룰 수 있다.
3. Apply Root Motion - 애니메이션이 게임 오브젝트의 트랜스폼에 영향을 줄 수 있는지 여부를 결정한다
4. Update Mode - 캐릭터의 포지션과 회전을 애니메이션 자체에서 제어할지 또는 스크립트에서 제어할지 여부
4.1 - Normal - 애니메이터는 업데이트 호출과 싱크되어 업데이트되며, 애니메이터의 속도는 현재의 타임스케일과 일치합니다. 타임스케일이 느려지면 애니메이션도 따라서 느려진다.
4.2 - Animate Physics - 애니메이터는 FixedUpdate 호출에 따라(물리 시스템과 동시에) 업데이트, 리지드바디 오브젝트를 밀어 움직일 수 있는 캐릭터와 같이 물리 상호작용을 하는 오브젝트의 모션을 애니메이션화하는 경우에 이 모드를 사용해야 한다.
4.3 - Unscaled Time - 애니메이터는 업데이트 호출에 따라 업데이트되지만 애니메이터의 속도는 현재의 타임스케일을 무시하고 항상 100%의 속도로 애니메이션화, 게임플레이를 일시정지하거나 특수한 효과를 위해 수정된 타임스케일을 사용하면서 GUI 시스템을 노멀 속도로 애니메이션화하는 경우에 유용하다.
5. Culling Mode - 애니메이션에 사용할 수 있는 컬링 모드
5.1 - Always Animate - 항상 애니메이션화하고 오프스크린일 경우에도 컬링을 하지 않는다.
5.2 - Cull Update Transforms - 렌더러가 보이지 않을 때 리타겟, IK 및 트랜스폼의 쓰기를 비활성화
5.3 - Cull Completely - 렌더러가 보이지 않을 때 애니메이션을 완전히 비활성화합니다.
3. 애니메이터 설정

Player_Stand 애니메이션이 디폴트 값으로 설정(주황색)
Any State - 어떤 상태든 상관 없이 이동하고 싶을 때
기본 용어
Transition 이란? | 상태 이동을 어떻게 할 것인지 설정하는 통로 |
Parameters 이란? | 상태 변경을 위한 조건 |
※원하는 애니메이션을 만들기 위해 트랜지션과 파라메터 생성 후 각 트랜지션 컨디션에서 조건을 설정해주자※

Stand -> Run 으로 가기 위해 0.01보다 큰값을 주는 컨디션 추가

Run -> Stand 로 가기 위해 0.01보다 작은값을 주는 컨디션 추가


Fixed Duration | 3D애니메이션에서 부드럽게 전환 |
Has Exit Time | 즉각적인 상태 변경 (false 상태시 애니메이션이 끝날때 까지 기다리지않고 즉각적으로 상태 변경 ) |
4. 스크립트 작성


SetFloat, Setbool ... 등 파라메터와 동일한 타입의 함수를 호출해주면 된다.
SetFloat("A", B);
A 인자 - 파라메터에서 설정한 파라메터의 이름 [대소문자 구분]
B 인자 - 반영할 값
Vector.magnitude - 벡터의 길이(순수한 크기)를 Return
5. 애니메이터의 재활용
재활용의 이유? - 플레이어와 같은 동작을 할때 애니메이션만 바꿔주면 3번처럼 매번 생성하지 않아도 되기 때문에
Animator Override Controller ? - [원본의 애니메이터 컨트롤러를 확장하는 에셋으로 사용된 특정 애니메이션을 대체하지만 원본 구조, 파라미터와 로직을 유지]
5.1 - 우선 Animation폴더 안에 Animator Override Controller 을 생성해주자

5.2 - 플레이어가 아닌 적들도 플레이어와 같이 애니메이션을 만들어주자

Player_Run1 과 같이 다른 캐릭터의 애니메이션을 만든 모습
ACPlayer1 - Animator Override Controller
5.3 - 생성한 Animator Override Controller 에 넣어주자

Controller | 어떤 애니메이터를 재활용(Override)할것인지? |
Original | 원본 |
Override | 사본 |
Animator Override Controller 을 사용하여 플레이어 복제본을 하나 더 생성한 모습

좌 - Player 원본
우 - Player1 복제본
'프로젝트 > 언데드 서바이벌 프로젝트' 카테고리의 다른 글
5장. 몬스터 만들기 (2) | 2023.10.17 |
---|---|
4장. 맵이동 (0) | 2023.10.12 |
2.5장. Player 이동 - Input System 활용 (0) | 2023.09.25 |
2장. Player 이동 (2) | 2023.09.25 |
1장. Player 만들기(뱀파이어 서바이벌 라이크) (0) | 2023.09.25 |