유니티:애니메이션: 두 판 사이의 차이

학교의 모든 지식. SMwiki
둘러보기로 이동 검색으로 이동
13번째 줄: 13번째 줄:
#:
#:
#애니메이터의 파라미터 창에서 +를 눌러 판단요소를 추가한다.(요소의 스크립트에서 사용할 이름과 똑같이 맞춰야 한다.)
#애니메이터의 파라미터 창에서 +를 눌러 판단요소를 추가한다.(요소의 스크립트에서 사용할 이름과 똑같이 맞춰야 한다.)
#:
#:- 애니메이터의 파라미터에서 추가하면 변수타입을 추가할 수 있다. 특정 상태에서 다른 상태로 변화를 주고자 할 때 변수가 특정 값을 가질 때 state가 변하게 할 수 있다.
#:- 변수를 bool형식이 아니라, int형식으로 바꾸면 다양한 상태로의 분기를 만들기 쉽다.
#트렌지션을 만든다.(박스 우클릭 후 make transition 클릭, 연결할 애니메이션을 클릭한다.)
#트렌지션을 만든다.(박스 우클릭 후 make transition 클릭, 연결할 애니메이션을 클릭한다.)
#:
#:- 트렌지션(화살표)를 선택하면 Conditions에 매개변수를 넣을 수 있다. 매개변수의 값에 따라 트렌지션이 발생한다.  Has Exit Time : 애니메이션이 끝날 때까지 다음 state로 넘기지 않는다는 옵션. 동작을 즉각 바꿔주어야 할 땐 체크를 해제한다.
#트렌지션의 조건을 지정해준다.(트렌지션 속성 중 condition으로 지정.) 조건은 파라미터 창에 정의된 변수들을 통해 판단한다.
#condition 지정.<blockquote>- 트렌지션의 조건을 지정해준다.(트렌지션 속성 중 condition으로 지정.) 조건은 파라미터 창에 정의된 변수들을 통해 판단한다.</blockquote>
#:
#:


49번째 줄: 50번째 줄:


Loop Time 이걸 풀어주면 1회만 실행된다.
Loop Time 이걸 풀어주면 1회만 실행된다.
===애니메이션 적용===
===애니메이션 매개변수===
애니메이터의 파라미터에서 추가하면 변수타입을 추가할 수 있다. 특정 상태에서 다른 상태로 변화를 주고자 할 때 변수가 특정 값을 가질 때 state가 변하게 할 수 있다.
트렌지션(화살표)를 선택하면 Conditions에 매개변수를 넣을 수 있다. 매개변수의 값에 따라 트렌지션이 발생한다.
Has Exit Time : 애니메이션이 끝날 때까지 다음 state로 넘기지 않는다는 옵션. 동작을 즉각 바꿔주어야 할 땐 체크를 해제한다.
변수를 bool형식이 아니라, int형식으로 바꾸면 다양한 상태로의 분기를 만들기 쉽다.
2차원의 경우 뒤집기를 활용해 방향을 지정하자.
spriteRenderer.flipX= (값==조건); //이런  형태로 지정도 가능하다.<br />


===스크립트에서 상태 바꾸기===
===스크립트에서 상태 바꾸기===

2021년 7월 30일 (금) 10:38 판

틀:유니티

  1. 유니티:개요
  2. 유니티:기본 조작
    1. 유니티:에셋스토어
  3. 유니티:카메라
  4. 유니티:오브젝트
    1. 유니티:데이터 입력받기
    2. 유니티:오브젝트 이동(오브젝트 조작)
    3. 유니티:힘으로 오브젝트 이동
    4. 유니티:충돌 이벤트
    5. 유니티:오브젝트 작성 tip
    6. 유니티:프리팹
  5. 유니티:코딩기초
    1. 유니티:C sharp 코딩 편의기능
    2. 유니티:MonoBehaviour
    3. 유니티:이벤트 메서드
    4. 유니티:컴포넌트 조작하기
  6. 유니티:UI
  7. 유니티:게임 내 화면
  8. 유니티:플레이어
    1. 유니티:모델
    2. 유니티:캐릭터 이동
    3. 유니티:애니메이션
    4. 유니티:주인공 시점
  9. 유니티:맵
    1. 유니티:투명한 벽 만들기
    2. 유니티:내비게이션
  10. 유니티:씬
  11. 유니티:몬스터
  12. 유니티:아이템
  13. 유니티:음향
    1. 유니티:배경음
    2. 유니티:효과음
  14. 유니티:빌드
  15. 유니티:VR
    1. 유니티:VR:UI
    2. 유니티:VR:VR로 변환
  16. 유니티:팁

개요

캐릭터가 움직일 때, 점프할 때, 가만히 있을 때의 몸동작이 달라져야 한다. 이를 구현하기 위한 지식.

이 애니메이션들도 역시 스크립트로 제어한다.

방법

  1. 애니메이션들을 하이어라키 창의 대상에 드래그해 넣는다.(애니메이터에서 추가된 애니메이션들을 볼 수 있다.)
    -
  2. 애니메이터를 연다.(window > animation > animator)
  3. 애니메이터의 파라미터 창에서 +를 눌러 판단요소를 추가한다.(요소의 스크립트에서 사용할 이름과 똑같이 맞춰야 한다.)
    - 애니메이터의 파라미터에서 추가하면 변수타입을 추가할 수 있다. 특정 상태에서 다른 상태로 변화를 주고자 할 때 변수가 특정 값을 가질 때 state가 변하게 할 수 있다.
    - 변수를 bool형식이 아니라, int형식으로 바꾸면 다양한 상태로의 분기를 만들기 쉽다.
  4. 트렌지션을 만든다.(박스 우클릭 후 make transition 클릭, 연결할 애니메이션을 클릭한다.)
    - 트렌지션(화살표)를 선택하면 Conditions에 매개변수를 넣을 수 있다. 매개변수의 값에 따라 트렌지션이 발생한다. Has Exit Time : 애니메이션이 끝날 때까지 다음 state로 넘기지 않는다는 옵션. 동작을 즉각 바꿔주어야 할 땐 체크를 해제한다.
  5. condition 지정.

    - 트렌지션의 조건을 지정해준다.(트렌지션 속성 중 condition으로 지정.) 조건은 파라미터 창에 정의된 변수들을 통해 판단한다.

애니메이터로 애니메이션 적용

window>animation>animator 에서 상황에 따라 어떤 애니메이션이 나오게 할지 정할 수 있다.

기초개념

개념 설명
state 박스 하나하나는 state라고 부른다.
Entre Entre는 맨 처음의 상태.

가장 처음엔 Entry가 보이는데, 이는 가장 처음에 적용할 애니메이션을 적용하라는 의미이다.(일반적으로 Idle 상태와 연결한다.)

Transition 한 상태에서 다음 상태로 넘어가는 조건이다.

Make Transition을 통해 다음 상태로의 연결을 할 수 있다.



애니메이션 창

Ctrl + 6 으로 애니메이션 창을 볼 수 있다. 프레임 단위로 애니메이션을 조절할 수 있다. 혹은 애니메이터의 각 state를 선택해 스피드를 조절할 수 있다.

Loop Time 이걸 풀어주면 1회만 실행된다.

스크립트에서 상태 바꾸기

클래스에서 전역변수를 정의한다.

Animator 변수명; //파라미터를 가져온다.

함수 내에서 변수명 = GetComponent<Animator>();

변수명.SetBool("애니메이터 안의 매개변수명", 지정할 값); //이 형태로 특정 상태가 발생했을 때 애니메이터 매개변수값을 바꿀 수 있다.

상태바꾸기를 통해 피격이나 공격이나 다양하게 변화가 가능할 것이다.


AnyState

어떤 상황에서든 특정 조건이 발생했을 때 바로 애니메이션이 작동하게 하려면.. 이것과 state, exit를 사용하면 된다.


각종 동작 구현

이동 구현

Idle 상태의 애니메이션과 walk 상태의 애니메이션, run 상태의 애니메이션이 있다 가정한다.

걷기 구현

  1. Animator 창의 Parameter 선택.
  2. +를 누르고 Float 선택 후 해당 파라미터의 이름을 Speed라 짓는다.(이 값은 이동 스크립트 내에서 animator.SetFloat("Speed", playerInput.sqrMagnitude); 등의 방법으로 입력해준다.)
  3. Idle로부터 Walk의 트렌지션을 만든다.(Walk에서 Idle로 반대로도 트렌지션을 만든다.)
  4. 각 트렌지션의 'Has Exit Time' 해제.
  5. Idle>Walk 방향 트렌지션의 condition을 추가한다. Speed와 Greater을 선택하고 0.01 값을 준다.(아주 미세하게 움직여서 속도값을 갖게 되는 경우가 있기 때문.)
  6. Walk>Idle 방향 트렌지션의 condition을 추가한다. Speed와 Less를 선택하고 0.01 값을 준다.(아주 미세하게 움직여서 속도값을 갖게 되는 경우가 있기 때문.)

점프 구현

  1. Animator 창의 Parameter 선택.
  2. +를 누르고 Trigger 선택 후 해당 파라미터의 이름을 Jump라 짓는다.(이 값은 이동 스크립트 내에서 animator.SetTrigger("Jump"); 등의 방법으로 입력해준다.)
  3. +를 누르고 Bool 선택 후 해당 파라미터의 이름을 Grounded라 짓는다.(점프가 끝난 후 바닥판정을 하기 위함.)
  4. Idle로부터 Jump의 트렌지션을 만든다.(Jump에서 Idle로 반대로도 트렌지션을 만든다.)
  5. 각 트렌지션의 'Has Exit Time' 해제.
  6. Idle>Jump 방향 트렌지션의 condition을 추가한다. Jump를 선택한다.
  7. Jump>Idle 방향 트렌지션의 condition을 추가한다. Grounded를 선택하고, Speed값이 0.01 이하일 조건을 추가한다.
  8. Jump와 Run 애니메이션의 트렌지션들도 위와 같은 방법으로 추가한다.