Tween
Tween은 단일 대상 객체에 대한 애니메이션을 정의하는 데 사용됩니다. 객체의 위치, 회전, 크기, 색상 등 다양한 속성을 원하는 값으로 부드럽게 변환시키는 데 적합합니다.
Tween 주요 기능
- 타겟 지정: 애니메이션을 적용할 대상 객체 지정
- 속성 변경: 이동, 회전, 크기 조정, 색상 변경 등 다양한 속성 변환
- Ease 함수: 부드러운 움직임을 위한 Ease 함수 적용
- 지속 시간: 애니메이션 실행 시간 설정
- 지연 시간: 애니메이션 시작 지연 시간 설정
- 루프: 애니메이션 반복 횟수 설정
- 콜백: 애니메이션 시작, 종료, 진행 상황에 따라 이벤트 발생
using DG.Tweening;
using UnityEngine;
public class MoveObject : MonoBehaviour
{
void Start()
{
// 객체를 (10, 2, 5) 위치로 2초 동안 이동
transform.DOMove(new Vector3(10, 2, 5), 2f);
// 객체를 90도 회전
transform.DORotate(new Vector3(0, 90, 0), 1f);
// 객체 크기를 2배로 증가
transform.DOScale(Vector3.one * 2f, 1f);
}
}
Sequence
Sequence는 하나 이상의 Tween을 연결하여 시간과 순서에 맞춰 배열하여 연속된 하나의 장면을 구성하는 기능입니다. 복잡한 애니메이션을 구현하는 데 사용됩니다. 각 Tween은 순차적으로 실행되거나 동시에 실행될 수 있으며, 지연, 루프, 콜백 등을 설정할 수 있습니다.
Sequence 주요 기능
- Tween 연결: 여러 Tween을 순차적 또는 동시에 연결
- 지연: Sequence 시작 지연 시간 설정
- 루프: Sequence 반복 횟수 설정
- 콜백: Sequence 시작, 종료, 진행 상황에 따라 이벤트 발생
- 타겟 지정: Sequence 전체에 적용할 대상 객체 지정
using UnityEngine;
using DG.Tweening;
public class SequenceExample : MonoBehaviour
{
void Start()
{
// Sequence 생성
Sequence sequence = DOTween.Sequence();
// 객체를 (10, 2, 5) 위치로 2초 동안 이동
sequence.Append(transform.DOMove(new Vector3(10, 2, 5), 2f));
// 1초 지연 후 객체를 (5, 3, 4) 위치로 1초 동안 이동
sequence.AppendInterval(1f);
sequence.Append(transform.DOMove(new Vector3(5, 3, 4), 1f));
// 객체를 90도 회전
sequence.Append(transform.DORotate(new Vector3(0, 90, 0), 1f));
// Sequence 시작
sequence.Play();
}
}
Sequence에 Tween 추가 및 콜백 설정
Sequence는 다양한 구성 함수를 제공하여 Tween을 추가하고 순서를 조정할 수 있습니다. 주요 구성 함수는 다음과 같습니다.
- Append : 마지막에 Tween을 추가합니다. 기본적인 순서대로 실행됩니다.
- Insert : 특정 시간에 Tween을 삽입합니다. 다른 Tween과 동시에 실행되거나 중간에 시작될 수 있습니다.
- Join : 앞에 추가된 Tween과 동시에 시작되는 Tween을 추가합니다.
- Prepend : 맨 처음에 Tween을 추가합니다.
예시
다음은 각 1초의 변환 시간을 가진 Tween A, B, C, D, E로 구성된 Sequence 실행 과정을 보여주는 예시입니다.
Sequence Sequence = DOTween.Sequence();
Sequence.Append(A)
.Join(B)
.Insert(1.5f, C)
.Prepend(D)
.Append(E);
콜백함수 등록
Sequence는 Tween 형태가 아닌 콜백 함수도 추가할 수 있습니다. 콜백 함수는 특정 시간에 특정 작업을 수행하도록 사용됩니다. 예를 들어, 트윈 중간에 스프라이트 변경, 파티클 발화 등을 구현하는 데 사용할 수 있습니다.
Sequence sequence = DOTween.Sequence();
bool moveIsDone = false;
sequence.Append(transform.DOMove(Vector3.forward, 1))
.AppendCallback(() => moveIsDone = true);
DOMove 트윈이 종료되면 moveIsDone = true가 됩니다.
체인 콜백 (Chained callbacks)
체인 콜백은 특정 트위너/시퀀스가 시작되거나 완료될 때 호출되는 함수입니다. 이 기능을 사용하면 애니메이션 실행 과정에서 특정 작업을 수행하거나 다른 애니메이션을 트리거할 수 있습니다.
체인 콜백 유형 (Chained callback types)
- OnStart: 트위너/시퀀스가 시작될 때 호출됩니다.
- OnUpdate: 트위너/시퀀스가 진행되는 동안 매 프레임마다 호출됩니다.
- OnComplete: 트위너/시퀀스가 완료될 때 호출됩니다.
- OnKill: 트위너/시퀀스가 중단될 때 호출됩니다.
- OnStart : 트위너/시퀀스가 실행될 때 마다 호출됩니다. 또한 일시 중지 상태에서 재생을 재개할 때에도 호출됩니다.
- OnPause : 트위너/시퀀스 상태가 일시 중지로 변경될 때 호출됩니다. SetAutoKill을 FALSE로 설정한 경우 완료될 때도 호출됩니다.
'Unity > Asset' 카테고리의 다른 글
Unity 애니메이션을 간편하게 만들어주는 DoTween (0) | 2024.04.27 |
---|