01 플레이어 오브젝트와 이미지 분할
Sprite Mode를 Multiple로 바꾸고 Sprite Editor에서 Column 3개로 이미지를 분할한다.
Player 오브젝트를 생성하고 화면에 보이도록 분할한 이미지 중 하나를 넣는다.
02 애니메이션 재생 설정
Player 오브젝트에 Animator Component를 추가한다.
Project View '+' 버튼 - Animator Controller 로 PlayerAnimator라는 이름의 Animator Controller Aesset을 생성한다.
Player 오브젝트에 생성한 PlayerAnimator를 등록한다.
03 대기 애니메이션 등록
Project View '+' 버튼 - Animation으로 Animation Asset을 생성한다.
애니메이션 파일은 Inspector View에서 반복 재생 여부만 선택할 수 있다.
Loop Time
- ture : 반복 재생
- false : 1회 재생
Animator Controller의 애니메이션을 등록하는 수정 작업은 Animator View에서 할 수 있다.
이때 Animator Controller 파일을 선택하는 것이 아닌 Animator Controller가 포함되어 있는 Player 오브젝트를 선택하고 편집을 해야 한다.
기존에 기본적으로 생성되어 있는 3개의 노드들을 배치하고 만든 Animation을 등록한다.
Player 오브젝트에 PlayerIdle이라는 Animation이 재생될 수 있는 조건이 갖추어진 것이다.
이제 Animation을 편집한다.
Animation Controller와 마찬가지로 Animation이 포함된 오브젝트를 선택하면 편집이 가능하다.
날갯짓을 하는 애니메이션을 반복해서 재생할 수 있도록 Player_Idle 이미지를 0 1 2 1 0 순서대로 배치한다.
Show Sample Rate 옵션을 체크하면 2D 애니메이션의 프레임 재생 속도를 설정할 수 있다.
Samples 값이 낮을수록 재생이 느리게 된다.
04 사망 애니메이션 등록
Sprite Mode를 Multiple로 바꾸고 Sprite Editor에서 Automatic을 사용하여 자동으로 이미지를 분할한다.
Project View '+' 버튼 - Animation으로 Animation Asset을 생성한다.
사망은 애니메이션이 한 번만 재생되기 때문에 Loop Time은 체크하지 않는다.
Animatoer View에서 사망 애니메이션을 등록한다.
Player 오브젝트를 선택하고 PlayerDie를 선택한다.
마찬가지로 Samples를 6으로 설정하고 애니메이션을 등록한다.
05 상태전이를 이용한 애니메이션 전환
애니메이션의 전환은 코드를 이용하지만 전환이 될 수 있는 조건은 Animator View에서 설정한다.
Make Transition 옵션으로 상태전이를 생성한다.
상태전이(Transition) : 화살표 방향으로 애니메이션 전환 가능
상태전이는 조건을 설정할 수 있으며, 조건이 없으면 애니메이션 1회 재생 후 상태전이 화살표 방향으로 이어져 있는 애니메이션을 전환
실행하면 Idle 애니메이션을 한 번 재생하고 Die 애니메이션을 재생하며 전환되는 것을 확인할 수 있다.
Transition에 있는 Conditions를 설정하면 애니메이션의 전환을 원하는 시점에 할 수 있다.
Conditions에 등록되는 변수는 Animator에 있는 Parameters로 생성하고 등록할 수 있다.
Parameters
- Float : 실수
- Int : 정수
- Bool : true, false
- Trigger : 1회성 체크
상황에 맞게 파라미터를 생성하며, Trigger의 경우 공격, 피격, 사망과 같이 단발적으로 호출되는 애니메이션에 주로 사용한다.
다시 실행해 보면 애니메이션이 전환되지 않고 isDie라는 Trigger 파라미터를 체크할 때만 애니메이션이 전환되는 것을 확인할 수 있다.
또한 PlayerDie에서 PlayerIdle로 가는 Transitioin Conditions에는 아무것도 설정되어 있지 않기 때문에 1회 재생한 후 바로 넘어간다.
Has Exit Time
- 현재 Transition의 Conditions을 만족했을 때 바로 동작을 변경할지 해당 동작을 끝까지 재생하고 변경할지 설정
- true : 해당 동작을 마저 재생하고 동작을 변경한다
- false : Conditions를 만족하는 순간 동작을 변경한다
06 스크립트를 이용한 파라미터 설정
Animator 타입의 변수를 만들어서 컴포넌트를 얻어오고 스페이스 키를 눌렀을 때 Animator 변수의 SetTrigger이라는 함수를 호출할 수 있다.
작성한 PlayerController 스크립트를 Player에 적용하고 실행을 하면 스페이스 키를 눌렀을 때 사망 애니메이션이 재생된다.
07 애니메이션 재생 중 함수 호출
재생하고 마지막 프레임에 ADD Event 버튼을 눌러서 이벤트를 등록할 수 있다.
ADD Event : 이벤트 생성
이벤트란? 애니메이션 재생 중 특정 프레임에 우리가 원하는 함수 호출
OnDieEvent 함수를 선택하면 사망 애니메이션이 재생이 되고 마지막 프레임이 선택한 함수가 호출된다.
실행을 해보면 스페이스 키를 눌렀을 때 Die 애니메이션이 재생되고 함수가 호출되어서 Console 창에 데이터가 출력되는 것을 확인할 수 있다.
코드
using UnityEngine;
public class PlayerController : MonoBehaviour
{
private Animator animator;
private void Awake()
{
animator = GetComponent<Animator>();
}
private void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
animator.SetTrigger("isDie");
}
}
public void OnDieEvent()
{
Debug.Log("End of Die Animation");
}
}
'PBL > Unity' 카테고리의 다른 글
유니티 3D 기초 - CharacterController 기반의 오브젝트 이동 (0) | 2024.05.07 |
---|---|
유니티 2D 기초 - 2D Tilemap Editor (0) | 2024.05.07 |
유니티 2D 기초 - 2D Sprite / Animation (0) | 2024.04.30 |
유니티 2D 기초 - 플랫폼 게임에서의 플레이어 이동, 점프 구현 (0) | 2024.04.30 |
유니티 2D 기초 - 게임오브젝트 삭제 함수 (0) | 2024.04.14 |