신입 개발자 공부 과정

Unity 2D 게임 개발 - 플레이어 애니메이션 적용 및 방향 전환 처리 본문

유니티 게임개발 따라하기

Unity 2D 게임 개발 - 플레이어 애니메이션 적용 및 방향 전환 처리

Lewisjkim 2025. 5. 26. 12:36

이번 포스트에서는 플레이어 캐릭터에 애니메이션을 적용하고, 이동 방향에 따라 캐릭터를 좌우 반전하는 방법을 알아봅니다. 기본적인 캐릭터 연출을 위한 중요한 요소입니다.


1. 애니메이션 준비하기

▶️ 애니메이션 스프라이트 가져오기

  1. 걷기, 대기 등 Sprite Sheet를 프로젝트에 임포트
  2. Texture Type: Sprite (2D and UI), Sprite Mode: Multiple 설정
  3. Sprite Editor에서 Slice - Grid by Cell Size 사용해 자르기

▶️ Animation 생성

  1. Window > Animation > Animation 창 열기
  2. 플레이어 GameObject 선택 후 Create 버튼 클릭
  3. Idle.anim, Run.anim 등을 각각 생성
  4. 잘라낸 프레임들을 타임라인에 드래그하여 애니메이션 구성

2. 애니메이터 설정

  1. 자동으로 Animator Controller가 생성됨 (예: Player.controller)
  2. Window > Animator 창에서 상태(State) 확인 가능
  3. IdleRun 전환 조건으로 isRunning 파라미터 추가
  4. 조건 설정: isRunning == true 일 때 Run 실행, 아니면 Idle

3. 스크립트에서 애니메이션 전환 제어

▶️ PlayerMovement.cs 수정


using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float moveSpeed = 5f;
    public float jumpForce = 10f;
    private Rigidbody2D rb;
    private Animator animator;
    private SpriteRenderer spriteRenderer;
    private bool isGrounded;

    void Start()
    {
        rb = GetComponent<Rigidbody2D>();
        animator = GetComponent<Animator>();
        spriteRenderer = GetComponent<SpriteRenderer>();
    }

    void Update()
    {
        float moveInput = Input.GetAxis("Horizontal");
        rb.velocity = new Vector2(moveInput * moveSpeed, rb.velocity.y);

        // 애니메이션 전환
        animator.SetBool("isRunning", moveInput != 0);

        // 방향 전환
        if (moveInput != 0)
            spriteRenderer.flipX = moveInput < 0;

        // 점프
        if (Input.GetKeyDown(KeyCode.Space) && isGrounded)
        {
            rb.velocity = new Vector2(rb.velocity.x, jumpForce);
        }
    }

    void OnCollisionEnter2D(Collision2D collision)
    {
        if (collision.contacts[0].normal.y > 0.5)
            isGrounded = true;
    }

    void OnCollisionExit2D(Collision2D collision)
    {
        isGrounded = false;
    }
}

4. Animator 트랜지션 팁

  • Has Exit Time 체크 해제: 빠른 전환을 위해
  • Transition Duration 0으로 설정하면 딱 끊김 없는 자연스러운 전환 가능

✅ 마무리

이제 캐릭터가 움직이면 애니메이션이 전환되고, 이동 방향에 따라 좌우 반전되는 캐릭터를 완성했습니다. 다음 포스트에서는 플랫폼 게임의 핵심! 점프 가능한 발판과 적 캐릭터 추가를 진행해 보겠습니다.


🔖 태그:

Unity2D, 애니메이션, Animator, Sprite Flip, 유니티 애니메이터, 방향 전환

📝 검색 설명:

유니티 2D 게임에서 애니메이션을 설정하고, 플레이어 이동 방향에 따라 스프라이트 반전과 애니메이션 전환을 구현하는 방법을 소개합니다.