본문 바로가기

Programming/유니티

유니티 (Unity) Animator로 2d Animation 재생(Play)

목표

animator를 이용하여 간단하게 반복적인 Idle 움직임과 외부에서 클릭 시 점프하는 animation을 구현하여 여러 개의 애니메이션이 한 번에 재생되는 상황을 연출해 보겠습니다.

목차
1. 결과화면
2. 오브젝트의 구성
3. animator 생성
4. animation 생성
5. 점프 스크립트 작성
6. 반복재생과 한번재생
7. animation 속도
8. animator에서 clip 가져오기

----

----

결과화면

unity animator 2d animation

 

오브젝트 구성

오브젝트는 obj라는 최상위 부모와 body, eyes를 넣어서 obj는 점프하는 애니메이션을, body는 Idle 애니메이션을, eyes는 눈을 깜빡이는 애니메이션을 수해합니다. body의 Idle 애니메이션 eyes가 영향을 받지 않도록 body와 eyes는 동일 레벨에 위치합니다. eyes 아래는 leye, reye 왼쪽 눈과 오른쪽 눈을 넣어줍니다. 저는 눈의 왼쪽, 오른쪽 위치를 -0.7, 0.7로 하였습니다. 그리고 eyes와 body의 z fighting 때문에 눈이 안 보일 수 있으니 눈의 z 값을 -0.01을 주어서 body보다 앞으로 나오게 합니다.

따라 하시기 편하도록 몸통과 눈에 사용된 이미지를 공유합니다. circleSmall이 body, circleTiny가 leye, reye입니다.

circleSmall.png
0.01MB
circleTiny.png
0.00MB
unity animator example

이미지 적용법을 모르시는 분들은 아래를 참고해 주세요

 

 

유니티 (Unity Basic) 이미지 적용 (Image Drag and Drop)

Image 'Sprite Renderer'와 'Image'에 이미지를 적용할 때 Drag and Drop 으로 이미지를 적용할 수 있습니다. ---- ---- 적용방법 특정 폴더에 위치한 이미지를 'Sprite'에 Drag and Drop 해줍니다. 'Sprite Renderer'는 'Spri

moblieandlife.tistory.com

 

animator 생성

용도에 따라서 animator를 생성합니다. obj, body, eyes를 각각 생성하여 obj, body, eyes에 붙여줍니다. 지금 단계에서는 단순하게 생성만 해줍니다. 상세 설정은 아래에서 하게 됩니다.

unity animator example
unity animator

 

animation 생성

animator에는 다양한 애니메이션이 들어갑니다. 오늘은 단순하게 각각 애니메이터에 하나의 애니메이션만 배치하여 실행해 보도록 하겠습니다. objJump, bodyIdle, eyesBlink를 각각 생성하여 obj, body, eyes animator에 드래그앤드랍 해줍니다. obj animator에서는 첫 시작을 objJump로 하지 않기 위해 빈 스테이트를 하나 만들어서 entry가 빈 스테이트를 바라보게 하고 objJump는 exit로만 transition을 연결해 줍니다.

obj animator 구조
0:30의 y 위치만 변경해줍니다
0:30의 y sacle 값만 변경해줍니다.
0:30의 y sacle 값만 변경해줍니다.

----

----

점프 스크립트 작성

클릭했을 때 obj가 점프할 수 있도록 Input 함수를 작성하여 마우스를 릴리스 할 때 점프하는 애니메이션(objJump)을 호출해 줍니다.

Animator objAnimator;

// Start is called before the first frame update
void Start()
{
    objAnimator = GameObject.Find("obj").GetComponent<Animator>();
}

// Update is called once per frame
void Update()
{
    if (Input.GetMouseButtonUp(0))
    {
        objAnimator.Play("objJump");
    }
}

 

반복재생과 한번재생

이제 재생을 하게 되면 body와 eyes가 반복적으로 애니메이션을 재생하고 클릭을 하게 되면 점프를 하는데 점프가 멈추지 않습니다.
objJump를 클릭해 보면 Inspector 창에서 Loop time이란 요소를 확인할 수 있습니다. 이것을 비활성 해주면 반복해서 재생되지 않습니다. 이것은 bodyIdle과 eyesBlink도 마찬가지로 비활성화해주면 한 번만 애니메이션이 작동하게 됩니다.

animation loop

 

animation 속도

eyes animator에서 eyesBlink를 눌러보게 되면 speed란 요소가 있는데 이것을 0.5로 변경해 주어 눈이 천천히 깜빡이도록 합니다.

animation speed

 

animator에서 clip 가져오기

하나의 animator에 여러 개의 애니메이션을 할당할 때가 있습니다. 이때 해당 애니메이터에 어떤 애니메이션들이 있는지 확인이 필요할 때가 있습니다.

void Start()
{
    var objAnimator = GameObject.Find("obj").GetComponent<Animator>();
    AnimationClip[] _anis = objAnimator.runtimeAnimatorController.animationClips;
}

 

 

유니티(Unity) 프로젝트 점프게임 만들기 : [1] 시작

목표 아주 단순한 점프게임을 만들어서 광고를 붙이고 광고수익을 발생 시켜보는 것이 이 프로젝트의 목표입니다. 서버도 없고 단지 클라이언트로 로그라이크형의 게임을 만들것이기 때문에

moblieandlife.tistory.com

 

일잘러 사장님의 구글 스프레드시트 기초 팁

문서관리 회사원이든 자영업자든 일 잘하는 사람이 되기 위한 시작은 문서관리입니다. 오늘은 초보 커피 사장님이 되어 구글 스프레드시트를 통해 제품관리를 해보도록 하겠습니다. 구글 스프

moblieandlife.tistory.com

 

애드센스 수동광고와 자동광고의 위치와 조회가능 Active View

광고 블로그를 시작하고 수동광고를 시작한 후부터 광고 위치에 대한 고민이 많아졌다. 오늘은 그동안 수동광고를 적용하면서 경험했던 부분과 애드센스에서 이야기하는 조회가능성이 좋은 위

moblieandlife.tistory.com

 

베트남 주의해야 할 짝퉁 판매하는 곳들

베트남 베트남에는 수많은 브랜드(나이키, 아디다스, 푸마 등)들의 생산 공장들이 밀집해 있는 곳으로 유명합니다. 그런 만큼 다양한 가품(짝퉁) 제품들이 판매되고 있습니다. 베트남에서 쇼핑

moblieandlife.tistory.com