이번엔 DOTween을 이용하는 예제와 이 예제들을 활용하여 어떤것을 구현할 수 있을지도 적어보면서
DOTween을 배우는 시간을 마무리해보도록 하겠다.
1. Ease 커스텀 곡선 애니메이션
AnimationCuve를 사용하여 원하는 움직임을 만들어보자.
using DG.Tweening;
using UnityEngine;
public class CustomEaseExample : MonoBehaviour
{
public Transform target; // 움직일 대상
public AnimationCurve customCurve; // 곡선 (에디터에서 설정해줄것)
void Start()
{
target.DOMoveY(5f, 2f)
.SetEase(customCurve) // AnimationCurve를 Ease로 설정
.OnComplete(() => Debug.Log("애니메이션 완료!"));
}
}
에디터에서 AnimationCurve를 설정하고, DOTween애니메이션에 적용이 가능하다.
활용 : 점프를 할때 초반엔 빠르게 상승하고 후반엔 천천히 멈추는 자연스러운 동작을 구현할 수 있다.
2. DOTween 콜백 활용하기
애니메이션이 끝난 후 이벤트를 실행하거나, 특정 시점에 작업을 추가할 수 있다.
using DG.Tweening;
using UnityEngine;
public class CallbackExample : MonoBehaviour
{
public Transform target;
void Start()
{
Sequence sequence = DOTween.Sequence();
sequence.Append(target.DOMoveX(3f, 2f))
.Join(target.DOScale(Vector3.one * 1.5f, 2f))
.OnUpdate(() => Debug.Log("진행중")) // 매 프레임 호출
.OnStepComplete(() => Debug.Log("한단계 끝!")) // 한 단계가 끝날 때 호출
.OnComplete(() => Debug.Log("전체 완료!"));
}
}
활용 : 중간중간 이펙트, 사운드, 알림 등 원하는 타이밍에 쉽게 연출을 넣을 수 있다.
3. DOTween Path 활용
DOTween Path는 특정 경로를 따라 오브젝트를 이동시킬 수 있는 기능이다.
using DG.Tweening;
using UnityEngine;
public class PathExample : MonoBehaviour
{
public Transform target;
void Start()
{
Vector3[] path = new Vector3[]
{
new Vector3(0, 0, 0),
new Vector3(3, 2, 0),
new Vector3(6, 0, 0)
};
target.DOPath(path, 3f, PathType.CatmullRom)
.SetEase(Ease.Linear)
.SetLookAt(0.01f); // 이동 방향으로 회전
}
}
활용 : NPC의 원하는 이동 혹은 투사체가 곡선을 그리며 이동
이 외에 실제 게임에서 쓰기 좋은것들을 정리해보자.
첫번째로는 당연하게도 UI 시스템이다.
버튼효과, UI 전환효과(슬라이드 인/아웃, 페이드 인/아웃), 경고(떨림, 깜빡임), HUD(DOTween을 이용하여 부드럽게 업데이트)
다음으로는 캐릭터 애니메이션이다.
이동(부드러운 이동, 회전), 특수효과(캐릭터 크기변화, 발광효과), 카메라 추적에도 쓰이는 경우가 있음
또한 위에서 봤듯 점프에도 쓸 수 있다.(카메라는 업데이트된 시네머신을 배우는것을 추천)
특수효과
빛을 부드럽게 조정하거나, 오브젝트의 흔들림(피격으로인한 경직 등), 아이템 획득(아이템이 점점 커지며 중앙으로 이동하고 사라짐)
환경
플랫폼의 이동 혹은 문의 원하는 연출적 열림/닫힘 이 있다면 활용을 생각해보는것이 좋다.