애니메이션
유니티 엔진을 이용하여 오브젝트에 애니메이션을 추가하는 것도 가능하다.
먼저 Project에 Animation을 추가해준다.
그리고 추가해준 Animation을 적용시키고 싶은 오브젝트에 드래그&드롭한다.
그러면 해당 오브젝트에 적용시킬 애니메이션들을 관리할 수 있는 Animation Controller가 생성될 것이다.
Animation
만들어준 애니메이션을 더블클릭하면 Animation 창이 뜰 것이다.
이 창을 열고 애니메이션을 추가할 오브젝트를 Hierarchy 창에서 클릭한다.
그리고 원하는 스프라이트 이미지를 넣어 애니메이션을 추가할 수 있다.
추가해준 스프라이트 이미지들은 재생되기를 원하는 시간에 드래그&드롭으로 배치할 수 있다.
다른 애니메이션들도 추가하고 싶다면 애니메이션을 추가로 만든 후 마찬가지로
Hierarchy 창의 적용시키고 싶은 오브젝트에 애니메이션을 드래그&드롭 해준다.
그리고 Animation 창을 열어 설정할 애니메이션을 선택한 후 애니메이션을 만들어주면 된다.
Animation Controller
애니메이션 컨트롤러를 더블클릭하면 다음과 같은 Animator 창이 뜰 것이다.
이 창에서 애니메이션을 우클릭하여 Make Transition을 선택하여 transition을 만들 수 있다.
이 transition을 이용하여 원하는 애니메이션을 순서대로 진행시킬 수 있다.
애니메이션을 언제 전환시킬 것인지를 선택하기 위해서 트리거도 만들 수 있다.
Animation 창의 Parameters 창을 들어가면 원하는 형태의 트리거를 만들 수 있다.
이후 transition을 하나 선택한 후 Inspector 창을 보면 Conditions가 있다.
Conditions 에서 + 를 누르면 원하는 상태일 때 애니메이션이 진행되도록 설정할 수 있다.
나는 bool 형 트리거인 Walk를 만들어서 Walk가 true이면 Walk 애니메이션을 진행시키고
False이면 Walk 애니메이션을 멈추고 기본상태인 Idle 애니메이션으로 돌아가게끔 만들었다.
Animator 컴포넌트
스크립트에서 Animator 컴포넌트를 불러와서 방금 만든 애니메이션 파라미터에 접근할 수 있다.
SetFloat, SetInteger, SetBool, SetTrigger 함수들을 사용하여 파라미터의 값을 조정할 수 있다.
나는 Bool 형 파라미터를 만들었기 때문에 SetBool 함수를 사용해보겠다.
아래 코드처럼 작성하면 w 키를 눌렀을 때 Walk 애니메이션으로 전환되는 것을 확인할 수 있다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class NewBehaviourScript : MonoBehaviour
{
Animator MyAnimator;
// Start is called before the first frame update
void Start()
{
MyAnimator = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.W))
MyAnimator.SetBool("Walk", true);
}
}
부가기능 (루프)
애니메이션을 계속해서 반복시킬 수도 있다.
Animator 창에서 원하는 애니메이션을 더블클릭하면 Inspector 창에 Animation Clip 이 나온다.
여기서 Loop Time 에 체크박스를 선택해주면 애니메이션이 한 번만 실행되지않고 계속 반복된다.
만약 걷는 모션을 설정했는데 반복을 체크하지 않았다면 한 번만 걷는 모션을 취하고 더 이상 움직이지 않을 것이다.
'유니티 > 유니티 엔진' 카테고리의 다른 글
[유니티] 오버랩 박스 (충돌 감지) (0) | 2023.10.10 |
---|---|
[유니티] 애니메이션 전환 딜레이 제거 (0) | 2023.10.09 |
[유니티] 이미지 반전 (transform.localScale) (0) | 2023.10.07 |
[유니티] GetComponent, AddForce (0) | 2023.10.06 |
[유니티] 물리엔진, 충돌 (Rigidbody, Collider, OnCollisionEnter) (0) | 2023.10.06 |