유니티:애니메이션
- 유니티:개요
- 유니티:기본 조작
- 유니티:카메라
- 유니티:오브젝트
- 유니티:코딩기초
- 유니티:UI
- 유니티:게임 내 화면
- 유니티:플레이어
- 유니티:맵
- 유니티:씬
- 유니티:몬스터
- 유니티:아이템
- 유니티:음향
- 유니티:빌드
- 유니티:VR
- 유니티:팁
개요
캐릭터가 움직일 때, 점프할 때, 가만히 있을 때의 몸동작이 달라져야 한다. 이를 구현하기 위한 지식.
이 애니메이션들도 역시 스크립트로 제어한다.
방법
- 애니메이션 추가.
- - 애니메이션들을 하이어라키 창의 대상에 드래그해 넣는다.(애니메이터에서 추가된 애니메이션들을 볼 수 있다.)
- 애니메이터 열기.
- - 애니메이션을 다루는 창을 연다.(window > animation > animator)
- 파라미터 추가.
- - 어떤 상태를 판단하는 변수를 추가하는 과정이다. 이 변수는 스크립트에서 다룬다.
- - 애니메이터의 파라미터 창에서 +를 눌러 판단요소를 추가한다.(요소의 스크립트에서 사용할 이름과 똑같이 맞춰야 한다.)
- - 애니메이터의 파라미터에서 추가하면 변수타입을 추가할 수 있다. 특정 상태에서 다른 상태로 변화를 주고자 할 때 변수가 특정 값을 가질 때 state가 변하게 할 수 있다.
- - 변수를 bool형식이 아니라, int형식으로 바꾸면 다양한 상태로의 분기를 만들기 쉽다.
- -- 스크립트에서 파라미터 조작하기.
- 클래스에서 전역변수를 정의한다. Animator 변수명; //파라미터를 가져온다. 함수 내에서 변수명 = GetComponent<Animator>(); 변수명.SetBool("애니메이터 안의 매개변수명", 지정할 값); //이 형태로 특정 상태가 발생했을 때 애니메이터 매개변수값을 바꿀 수 있다.
상태바꾸기를 통해 피격이나 공격이나 다양하게 변화가 가능할 것이다.
- 트렌지션을 만든다.(박스 우클릭 후 make transition 클릭, 연결할 애니메이션을 클릭한다.)
- - 트렌지션(화살표)를 선택하면 Conditions에 매개변수를 넣을 수 있다. 매개변수의 값에 따라 트렌지션이 발생한다. Has Exit Time : 애니메이션이 끝날 때까지 다음 state로 넘기지 않는다는 옵션. 동작을 즉각 바꿔주어야 할 땐 체크를 해제한다.
- condition 지정.
- - 트렌지션의 조건을 지정해준다.(트렌지션 속성 중 condition으로 지정.) 조건은 파라미터 창에 정의된 변수들을 통해 판단한다.
애니메이터로 애니메이션 적용
window>animation>animator 에서 상황에 따라 어떤 애니메이션이 나오게 할지 정할 수 있다.
기초개념
개념 | 설명 |
---|---|
state | 박스 하나하나는 state라고 부른다. |
Entre | Entre는 맨 처음의 상태.
가장 처음엔 Entry가 보이는데, 이는 가장 처음에 적용할 애니메이션을 적용하라는 의미이다.(일반적으로 Idle 상태와 연결한다.) |
Transition | 한 상태에서 다음 상태로 넘어가는 조건이다.
Make Transition을 통해 다음 상태로의 연결을 할 수 있다. |
애니메이션 창
Ctrl + 6 으로 애니메이션 창을 볼 수 있다. 프레임 단위로 애니메이션을 조절할 수 있다. 혹은 애니메이터의 각 state를 선택해 스피드를 조절할 수 있다.
Loop Time 이걸 풀어주면 1회만 실행된다.
AnyState
어떤 상황에서든 특정 조건이 발생했을 때 바로 애니메이션이 작동하게 하려면.. 이것과 state, exit를 사용하면 된다.
각종 동작 구현
이동 구현
Idle 상태의 애니메이션과 walk 상태의 애니메이션, run 상태의 애니메이션이 있다 가정한다.
걷기 구현
- Animator 창의 Parameter 선택.
- +를 누르고 Float 선택 후 해당 파라미터의 이름을 Speed라 짓는다.(이 값은 이동 스크립트 내에서 animator.SetFloat("Speed", playerInput.sqrMagnitude); 등의 방법으로 입력해준다.)
- Idle로부터 Walk의 트렌지션을 만든다.(Walk에서 Idle로 반대로도 트렌지션을 만든다.)
- 각 트렌지션의 'Has Exit Time' 해제.
- Idle>Walk 방향 트렌지션의 condition을 추가한다. Speed와 Greater을 선택하고 0.01 값을 준다.(아주 미세하게 움직여서 속도값을 갖게 되는 경우가 있기 때문.)
- Walk>Idle 방향 트렌지션의 condition을 추가한다. Speed와 Less를 선택하고 0.01 값을 준다.(아주 미세하게 움직여서 속도값을 갖게 되는 경우가 있기 때문.)
점프 구현
- Animator 창의 Parameter 선택.
- +를 누르고 Trigger 선택 후 해당 파라미터의 이름을 Jump라 짓는다.(이 값은 이동 스크립트 내에서 animator.SetTrigger("Jump"); 등의 방법으로 입력해준다.)
- +를 누르고 Bool 선택 후 해당 파라미터의 이름을 Grounded라 짓는다.(점프가 끝난 후 바닥판정을 하기 위함.)
- Idle로부터 Jump의 트렌지션을 만든다.(Jump에서 Idle로 반대로도 트렌지션을 만든다.)
- 각 트렌지션의 'Has Exit Time' 해제.
- Idle>Jump 방향 트렌지션의 condition을 추가한다. Jump를 선택한다.
- Jump>Idle 방향 트렌지션의 condition을 추가한다. Grounded를 선택하고, Speed값이 0.01 이하일 조건을 추가한다.
- Jump와 Run 애니메이션의 트렌지션들도 위와 같은 방법으로 추가한다.