유니티/플랫포머 기초

[Unity] 플랫포머 기초 - 3. 플레이어 애니메이션

이름?없음 2024. 11. 26. 14:09
반응형

 

반응형

2024.11.26 - [유니티/플랫포머 기초] - [Unity] 플랫포머 기초 - 2. 지면 감지

 

[Unity] 플랫포머 기초 - 2. 지면 감지

2024.11.26 - [유니티/플랫포머 기초] - [Unity] 플랫포머 기초 - 1. 플레이어 이동 [Unity] 플랫포머 기초 - 1. 플레이어 이동이번에는 유니티를 사용하여 간단한 2D플랫포머 게임을 만들어 보겠습니다.우

no-name-stroy.tistory.com

이전 글에서는 지면 감지를 추가하여 점프를 개선해 보았습니다

이번 글에서는 플레이어에 애니메이션을 추가하여 보겠습니다

 

우선 플레이어에 사용할 에셋을 다운로드하여 봅시다

저는 이 에셋을 사용하였습니다

https://kenney.nl/assets/pixel-platformer

 

Pixel Platformer · Kenney

Download this package (200 assets) for free, CC0 licensed!

kenney.nl

 

에셋을 다운로드하고 tilemap-characters_packed파일로 이동해 주세요

 

이 사진파일을 잘라야 합니다

먼저 PixelPerUnit을 16으로 설정하고 SpriteMode를 Multiple로 설정해 주세요

 

이후 FilterMode를 Point(No Filter)로 Compression를 None으로 설정해 주세요

이렇게 하면 픽셀 사진이 선명하게 나옵니다

 

이제 SpriteEditor를 클릭하여 스프라이트 에디터로 진입해 주세요

 

스프라이트 에디터에 Slice를 클릭한 후 GridByCellCount를 선택, 이후 C : 9, R : 3으로 잘라주세요

 

스프라이트가 잘 잘라진 것을 확인할 수 있습니다

 

스프라이트 설정은 이로 전부 끝났습니다

이제 씬에서의 기초 작업이 필요합니다

 

우선 플레이어 오브젝트의 스프라이트 랜더러에 자신이 사용하고 싶은 캐릭터의 스프라이트를 설정해 주세요

 

그 후 콜라이더를 스프라이트에 맞추어 재조정해주세요

 

그 후 애니메이터 컨트롤러를 하나 만들어 주세요

 

그 후 플레이어 오브젝트에 애니메이터 컴포넌트를 추가하고 만들어 놓은 애니메이터 컨트롤러를 넣어주세요

 

이제 애니메이션 클립을 만들어야 합니다

애니메이션 창을 열어주세요

 

씬에서 플레이어를 클릭하고 Move라는 이름의 애니메이션 클립을 생성해 주세요

 

알맞게 애니메이션을 설정해 주세요

 

그 후 CreateNewClip을 눌러 Idle클립을 생성해 주세요

 

Idle클립도 알맞게 애니메이션을 설정해 주세요

 

애니메이션 설정이 끝났습니다

이제 애니메이션 상태 전환을 구성해야 합니다

애니메이터 창을 열어주세요

 

애니메이터 창에서 +버튼을 눌러 Move라는 이름의 Int형 파라미터를 만들어주세요

 

이제 트랜지션을 설정해야 합니다

지금 애니메이터 창을 보면 이런 식으로 구성되어 있을 것인데요

 

MoveState를 좌클릭 후 MakeTransition을 눌러 Move에서 Idle로 이동하는 트랜지션을 생성해 주세요

 

생성된 트랜지션을 클릭 후 다음과 같이 설정해 주세요

 

이번에는 Idle State를 클릭 후 MakeTransition을 눌러 Move로 이동하는 트랜지션을 생성해 주세요

 

생성된 트랜지션을 클릭 후 다음과 같이 설정해 주세요

 

애니메이션 설정이 완료되었습니다 다음으로 이것을 재어하는 스크립트를 작성해야 합니다

PlayerAnimeController라는 이름의 스크립트를 작성해 주세요

using UnityEngine;

public class PlayerAnimeController : MonoBehaviour
{

    /// <summary>
    /// 입력정보를 받기 위한 Input
    /// </summary>
    private InputController _input;

    /// <summary>
    /// 애니메이션 제어를 위한 Animator
    /// </summary>
    private Animator _anime;

    private void Awake()
    {
        //필드 할당
        _input = GetComponent<InputController>();
        _anime = GetComponent<Animator>();

        //이벤트 구독
        _input.OnMoveEvent += HandleMove;
    }

    /// <summary>
    /// Move이벤트 처리
    /// </summary>
    /// <param name="obj">입력정보</param>
    private void HandleMove(float obj)
    {
        //애니메이션 파라미터 값 설정
        //음수인 경우를 제거하기 위하여 절대값으로 넘김
        _anime.SetInteger("Move", (int)Mathf.Abs(obj));
    }
}

이 스크립트는 입력을 기반으로 애니메이션을 재어합니다

 

이제 실행시켜 본다면?

애니메이션이 잘 재생되는 것을 확인할 수 있습니다

 

하지만 플레이어가 이동 방향을 바라보지 않는 문제가 있는데요

다음 글에서는 이를 해결해 보도록 하겠습니다

반응형