Programing/UNITY

[Unity] 7. 애니메이션

바오밥 하단 2020. 5. 13. 03:24

- 애니메이션(Animation)

  • 하나의 동작을 저장하고 있는 에셋
  • Animator 컴포넌트가 필요
  • Animator Controller: 애니메이션 상태를 컨트롤 해주는 에셋. Any State, Entry, Idle, Exit 등을 포함
  • Transition: 상태 전환 조건. = 상태를 전환하는 방법(사진의 화살표를 말함) 클립을 우클릭하면 만들어지고 연결 가능.
  • Animation Clip: 재생할 애니메이션 동작. Motion 안에 있는 것.
  • Any State: 모든 상태. 다른 스테이트(상태)와 트랜지션을 연결하면 모든 상태가 조건을 만족할 때 A로 갈 수 있다는 뜻. 
  • Idle: 기본 상태

Animator 창

  • 상단 툴바 [Window] -> [Animation] -> [Animaion](=애니메이션 뷰)과 [Animator] 두 가지를 킨다.
  • 애니메이션을 만들 오브젝트를 선택하면 애니메이션 뷰에 뜨는 Create을 누른 후 파일을 만든다. 만들려고 하는 Clip의 이름으로 생성.

  • 녹화버튼을 누르고 프라임을 조절해서 변화를 주면 녹화가 된다. Preview를 누르면 반복 재생됨.
  • 프레임 별로 하나하나 삽입해도 되고, 원하는 파일 전체를 선택 후 드래그 해서 놓으면 일정한 간격으로 배치된다.
  • 색깔을 변화시키면 그라데이션처럼 점점 변하게 된다.
  • 재생 옆 숫자는 초당 프레임이다. 너무 빠르게 재생되는 것 같으면 프레임을 줄여주면 됨.
  • motion에 클립을 넣어주면 그 상태일 때 clip이 재생됨.

  • 스테이트를 더블 클릭하면 Motion을 볼 수 있다.

  • Loop Time: 계속 반복할 것인지.
  • Loop pose: 맨 처음과 마지막의 이질감을 줄이기 위해 부드럽게 맞춰주는 것(3D에서 많이 씀)
  • Cycle offset: 시작하는 지점. 0~1의 퍼센트. ex) 0.5=50%=중간에서 시작
  • 특정 조건을 설정하려면 Parameters에서 만든 후 Transition에서 condition을 설정. (bool은 false로 바꾸기 전까지 재생. Trigger는 한 번만 재생) 실행 했을 때 동그라미를 체크해주면 조건을 만족하는 것이 되어서 변함.

    • Transitoin의 Has Exit Time: 끝나는 시간이 있는지 여부. 조건이 만족된 즉시 이동하는지, clip이 끝나야 이동하는지. ex) Exit Time을 0.6으로 설정하면 조건을 만족하더라도 0.6까지 재생이 끝난 후 이동한다.
    • Transition Duration: 모션이 겹치는 정도
    • 스크립트에서 Parameter를 아래처럼 하는 것도 가능. (ex. 버튼을 누를 때)
public void ShootBtn() {
        GetComponent<Animator>().SetTrigger("Shoot_t");
        GetComponent<Animator>().SetBool("TestBool_b"true);
        float tempHp = GetComponent<Animator>().GetFloat("Hp_f");
        GetComponent<Animator>().SetFloat("Hp_f", tempHp - 10);
    }
 
cs