유니티2D (애니메이션 순환)

JHO·2022년 9월 12일
0

유니티 2D

목록 보기
4/8

1. 이미지 방향 바꾸기


  • Sprite Renderer - Flip 에 보면, X축 방향기준 과 Y축 방향 기준으로 하여 방향을 뒤집을 수 있음.
SpriteRenderer spriteRenderer;
 void Awake()
    {
        spriteRenderer = GetComponent<SpriteRenderer>();
    }
void Update()
    {
        if(Input.GetButtonUp("Horizontal"))
        {
            spriteRenderer.flipX = Input.GetAxisRaw("Horizontal") == -1;
        }
    }
  • Awake()함수에서 초기화.
  • Input.GetbuttonUp("Horizontal")을 이용해 왼쪽키보드를 눌러 -1이 될경우, flipX를 true.
    (왼쪽이동 할때 왼쪽을 바라보는 모습)

2. 애니메이션 전환


  • Animator에 들어가서 연결시작state의 Make Transition을 통해 연결하고싶은 state와 연결.

2-1. Parameter

  • Animator 왼쪽 상단에 Parameter은 애니메이션 상태 변환을 위한 변수.
  • 자료형으로는 Float ,Bool, int, Trigger가 존재.
    (생성한 변수를 Conditions에서 추가한 모습.)

2-2. Settings

  • Settings 에선 애니메이션에서 다른 애니메이션으로 전환할 때의 시간을 정해줌.
  • in 과 out 마커로 전환 시간 밑 시작과 끝을 정해줌.
  • 미리보기 재생 마커로 원하는 시간때부터 애니메이션 확인가능.
    (state끼리 겹치는 부분을 없앤 모습, 2D에선 주로 겹치지 않게 함.)

2-3. Has Exit Time

  • Has Exit Time 이란 애니메이션이 끝날때까지 상태를 유지.
  • 이동을 멈췄는데 이동하고있는 애니메이션이 다 안끝나서, 멈춘상태에 이동하고있는 애니메이션이 진행되고 있다면 이상하기에 보통 잘 사용 안함.
    (Has Exit Time false한 상태)

2-4. 코드

  • 먼저, 멈춘 상태에서 걷는 상태로 넘어갈때 iswalking 라는 bool 변수를 true,
    걷는 상태에서 멈춘 상태로 넘어갈 때는 false 라는 조건을 걸어줌.
Animator anim;
void Awake()
{
    anim = GetComponent<Animator>();
}
void Update()
{
        //animation
        if(Mathf.Abs(rigid.velocity.x) < 0.3) // 멈췄을 때 == 0
        {
            anim.SetBool("iswalking", false);
        }
        else
        {
            anim.SetBool("iswalking", true);
        }
}
  • Awake()에서 초기화.
  • Mathf.Abs()는 절댓값 함수.
  • 위 Animator에서 만들어논 bool 변수인 iswalking을 통해 속도가 0.3 미만이면 멈춘거로 가정하여, iswalking 을 false로 바꿔 멈춘 animation 동작.
  • 반대로, 0.3 이상이면 움직이는거로 가정하여, iswalking을 true상태로 바꿔 걷고있는 animation 동작.
    (멈출 때와 움직일때의 애니메이션이 다른 모습)

<참고>
골드 메탈님 강의 영상:https://www.youtube.com/watch?v=Z4iULRbiSTg&list=PLO-mt5Iu5TeYI4dbYwWP8JqZMC9iuUIW2&index=17![](https://velog.velcdn.com/images/ohjh1744/post/65fc0b1b-c19a-47f6-b8de-4ef122bb6f96/image.png)

사용한 텍스처 소스 : http://u3d.as/2mvJ (by골드메탈님)

profile
개발노트

0개의 댓글