유니티:애니메이션: 두 판 사이의 차이
잔글 (→기초개념) |
잔글 (→방법) |
||
(같은 사용자의 중간 판 3개는 보이지 않습니다) | |||
19번째 줄: | 19번째 줄: | ||
#:- 변수를 bool형식이 아니라, int형식으로 바꾸면 다양한 상태로의 분기를 만들기 쉽다. | #:- 변수를 bool형식이 아니라, int형식으로 바꾸면 다양한 상태로의 분기를 만들기 쉽다. | ||
#:-- 스크립트에서 파라미터 조작하기. | #:-- 스크립트에서 파라미터 조작하기. | ||
#:클래스에서 전역변수를 정의한다. Animator 변수명; //파라미터를 가져온다. 함수 내에서 변수명 = GetComponent<Animator>(); 변수명.SetBool("애니메이터 안의 매개변수명", 지정할 값); //이 형태로 특정 상태가 발생했을 때 애니메이터 매개변수값을 바꿀 수 있다.<br /> 상태바꾸기를 통해 피격이나 공격이나 다양하게 변화가 가능할 것이다. | #:클래스에서 전역변수를 정의한다. Animator 변수명; //파라미터를 가져온다. 함수 내에서 변수명 = GetComponent<Animator>(); 변수명.SetBool("애니메이터 안의 매개변수명", 지정할 값); //이 형태로 특정 상태가 발생했을 때 애니메이터 매개변수값을 바꿀 수 있다.(SetTrigger는 값이 없으니, 키만 주면 된다.)<br /> 상태바꾸기를 통해 피격이나 공격이나 다양하게 변화가 가능할 것이다. | ||
#트렌지션을 만든다.(박스 우클릭 후 make transition 클릭, 연결할 애니메이션을 클릭한다.) | #트렌지션을 만든다.(박스 우클릭 후 make transition 클릭, 연결할 애니메이션을 클릭한다.) | ||
#:- 트렌지션(화살표)를 선택하면 Conditions에 매개변수를 넣을 수 있다. 매개변수의 값에 따라 트렌지션이 발생한다. Has Exit Time : 애니메이션이 끝날 때까지 다음 state로 넘기지 않는다는 옵션. 동작을 즉각 바꿔주어야 할 땐 체크를 해제한다. | #:- 트렌지션(화살표)를 선택하면 Conditions에 매개변수를 넣을 수 있다. 매개변수의 값에 따라 트렌지션이 발생한다. Has Exit Time : 애니메이션이 끝날 때까지 다음 state로 넘기지 않는다는 옵션. 동작을 즉각 바꿔주어야 할 땐 체크를 해제한다. | ||
25번째 줄: | 25번째 줄: | ||
#:- 트렌지션의 조건을 지정해준다.(트렌지션 속성 중 condition으로 지정.) 조건은 파라미터 창에 정의된 변수들을 통해 판단한다. | #:- 트렌지션의 조건을 지정해준다.(트렌지션 속성 중 condition으로 지정.) 조건은 파라미터 창에 정의된 변수들을 통해 판단한다. | ||
#적용. | #적용. | ||
#오브젝트에 애니메이터 컴포넌트 추가. 여기에 애니메이션컨트롤러를 집어넣는다. | |||
==애니메이터로 애니메이션 적용== | ==애니메이터로 애니메이션 적용== | ||
42번째 줄: | 43번째 줄: | ||
가장 처음엔 Entry가 보이는데, 이는 가장 처음에 적용할 애니메이션을 적용하라는 의미이다.(일반적으로 Idle 상태와 연결한다.) | 가장 처음엔 Entry가 보이는데, 이는 가장 처음에 적용할 애니메이션을 적용하라는 의미이다.(일반적으로 Idle 상태와 연결한다.) | ||
마우스우클릭>Set as Layer Default State로 연결할 수 있다. | |||
|- | |||
|Exit | |||
|특정 상태에서 Exit로 연결되면 애니메이션이 완전히 종료된다. | |||
|- | |- | ||
|Transition | |Transition | ||
47번째 줄: | 53번째 줄: | ||
Make Transition을 통해 다음 상태로의 연결을 할 수 있다. | Make Transition을 통해 다음 상태로의 연결을 할 수 있다. | ||
전이가 일어날 때 자연스럽게 애니메이션이 이어지게끔 하는 시간. 초로 지정하여 두 애니메이션 클립이 부드럽게 섞인다.(Transition Duration) | |||
전환이 일어날 때 얼마 후에 전환할지도 이곳에서 지정할 수 있다. 애니메이션이 종료된 후에야 전이되게 할 수도 있다.(Has Exit Time. 아래 세팅에서 0~1 사이의 값으로 지정한다. 최소 몇% 진행되었을 때 넘어가게 할지.) | |||
|- | |- | ||
|AnyState | |AnyState | ||
|어떤 상황에서든 특정 조건이 발생했을 때 바로 애니메이션이 작동하게 하려면.. 이것과 state, exit를 사용하면 된다. | |어떤 상황에서든 특정 조건이 발생했을 때 바로 애니메이션이 작동하게 하려면.. | ||
피격, 죽음 등에 쓰인다. | |||
이것과 state, exit를 사용하면 된다. | |||
|} | |} | ||
2021년 8월 12일 (목) 22:19 기준 최신판
- 유니티:개요
- 유니티:기본 조작
- 유니티:카메라
- 유니티:오브젝트
- 유니티:코딩기초
- 유니티:UI
- 유니티:게임 내 화면
- 유니티:플레이어
- 유니티:맵
- 유니티:씬
- 유니티:몬스터
- 유니티:아이템
- 유니티:음향
- 유니티:빌드
- 유니티:VR
- 유니티:팁
개요[편집 | 원본 편집]
캐릭터가 움직일 때, 점프할 때, 가만히 있을 때의 몸동작이 달라져야 한다. 이를 구현하기 위한 지식.
이 애니메이션들도 역시 스크립트로 제어한다.
방법[편집 | 원본 편집]
- 애니메이션 추가.
- - 프로젝트 창에서 Create>Animator Controller로 애니메이터 컨트롤러 선택.(Controller는 애니메이션 상태도를 저장하는 에셋이다.)
- - (???)애니메이션들을 하이어라키 창의 대상에 드래그해 넣는다.(애니메이터에서 추가된 애니메이션들을 볼 수 있다.)
- 애니메이터 열기.
- - 애니메이션을 다루는 창을 연다.(window > animation > animator)
- 파라미터 추가.
- - 어떤 상태를 판단하는 변수를 추가하는 과정이다. 이 변수는 스크립트에서 다룬다.
- - 애니메이터의 파라미터 창에서 +를 눌러 판단요소를 추가한다.(요소의 스크립트에서 사용할 이름과 똑같이 맞춰야 한다.)
- - 애니메이터의 파라미터에서 추가하면 변수타입을 추가할 수 있다. 특정 상태에서 다른 상태로 변화를 주고자 할 때 변수가 특정 값을 가질 때 state가 변하게 할 수 있다.
- - 변수를 bool형식이 아니라, int형식으로 바꾸면 다양한 상태로의 분기를 만들기 쉽다.
- -- 스크립트에서 파라미터 조작하기.
- 클래스에서 전역변수를 정의한다. Animator 변수명; //파라미터를 가져온다. 함수 내에서 변수명 = GetComponent<Animator>(); 변수명.SetBool("애니메이터 안의 매개변수명", 지정할 값); //이 형태로 특정 상태가 발생했을 때 애니메이터 매개변수값을 바꿀 수 있다.(SetTrigger는 값이 없으니, 키만 주면 된다.)
상태바꾸기를 통해 피격이나 공격이나 다양하게 변화가 가능할 것이다.
- 트렌지션을 만든다.(박스 우클릭 후 make transition 클릭, 연결할 애니메이션을 클릭한다.)
- - 트렌지션(화살표)를 선택하면 Conditions에 매개변수를 넣을 수 있다. 매개변수의 값에 따라 트렌지션이 발생한다. Has Exit Time : 애니메이션이 끝날 때까지 다음 state로 넘기지 않는다는 옵션. 동작을 즉각 바꿔주어야 할 땐 체크를 해제한다.
- condition 지정.
- - 트렌지션의 조건을 지정해준다.(트렌지션 속성 중 condition으로 지정.) 조건은 파라미터 창에 정의된 변수들을 통해 판단한다.
- 적용.
- 오브젝트에 애니메이터 컴포넌트 추가. 여기에 애니메이션컨트롤러를 집어넣는다.
애니메이터로 애니메이션 적용[편집 | 원본 편집]
window>animation>animator 에서 상황에 따라 어떤 애니메이션이 나오게 할지 정할 수 있다.
기초개념[편집 | 원본 편집]
개념 | 설명 |
---|---|
state | 박스 하나하나는 state라고 부른다. |
Entre | Entre는 맨 처음의 상태.
가장 처음엔 Entry가 보이는데, 이는 가장 처음에 적용할 애니메이션을 적용하라는 의미이다.(일반적으로 Idle 상태와 연결한다.) 마우스우클릭>Set as Layer Default State로 연결할 수 있다. |
Exit | 특정 상태에서 Exit로 연결되면 애니메이션이 완전히 종료된다. |
Transition | 한 상태에서 다음 상태로 넘어가는 조건이다.
Make Transition을 통해 다음 상태로의 연결을 할 수 있다. 전이가 일어날 때 자연스럽게 애니메이션이 이어지게끔 하는 시간. 초로 지정하여 두 애니메이션 클립이 부드럽게 섞인다.(Transition Duration) 전환이 일어날 때 얼마 후에 전환할지도 이곳에서 지정할 수 있다. 애니메이션이 종료된 후에야 전이되게 할 수도 있다.(Has Exit Time. 아래 세팅에서 0~1 사이의 값으로 지정한다. 최소 몇% 진행되었을 때 넘어가게 할지.) |
AnyState | 어떤 상황에서든 특정 조건이 발생했을 때 바로 애니메이션이 작동하게 하려면..
피격, 죽음 등에 쓰인다. 이것과 state, exit를 사용하면 된다. |
애니메이션 창[편집 | 원본 편집]
Ctrl + 6 으로 애니메이션 창을 볼 수 있다. 프레임 단위로 애니메이션을 조절할 수 있다. 혹은 애니메이터의 각 state를 선택해 스피드를 조절할 수 있다.
Loop Time 이걸 풀어주면 1회만 실행된다.
각종 동작 구현[편집 | 원본 편집]
이동 구현[편집 | 원본 편집]
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 값을 준다.(아주 미세하게 움직여서 속도값을 갖게 되는 경우가 있기 때문.)
점프 구현[편집 | 원본 편집]
아래에선 Walk와 Run 모두 트렌지션을 만들었지만, Walk가 없이 만들어진 게임이 많다.
- 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 애니메이션의 트렌지션들도 위와 같은 방법으로 추가한다.