이전까지는 UVS를 사용해서 간단한 Tween 효과를 구현해서 기본적인 원리를 알아봤으니 실제 스크립트로는 이 DOTween을 어떻게 적용하고 사용하는지를 한 번 알아보자.
간단한 큐브를 사용해서 동작을 알아보자.
큐브를 움직일건데 움직임을 좀 확인할 수 있으면 좋을것 같아서 Trail Renderer를 넣어놨다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class Cube : MonoBehaviour
{
void Start()
{
transform.DOMove(Vector3.up * 3, 5f);
}
}

DG.Tweening 네임스페이스를 사용한다.
코드 길이나 내용적인 부분만 보더라도 기존에 부드럽게 물체를 이동시키기 위해서 코루틴으로 막, elapsed time, duration 설정해서 나눠가지고 lerp하는 그런 귀찮은 과정을 했는데 실제 DOTween을 쓰니깐 굉장히 간단하고 직관적으로 코딩이 가능해졌다.
public class Cube : MonoBehaviour
{
void Start()
{
transform.DOMove(Vector3.up * 3, 5f);
transform.DOScale(Vector3.one * 3, 5f);
transform.DORotate(Vector3.forward * 3, 5);
Material mat = GetComponent<MeshRenderer>().material;
mat.DOColor(Color.cyan, 5);
}
}

당연하게도 UI의 오브젝트에도 사용 가능하다.
public class MyText : MonoBehaviour
{
void Start()
{
RectTransform rt = GetComponent<RectTransform>();
rt.DOAnchorPosX(150, 1);
}
}

트위닝 함수 뒤에 시퀀스 함수로 효과 옵션을 여러 개 추가할 수 있다.
public class MyText : MonoBehaviour
{
void Start()
{
RectTransform rt = GetComponent<RectTransform>();
rt.DOAnchorPosX(0, 5).SetDelay(1.5f).SetEase(Ease.InOutBounce);
}
}
.SetDelay로 delay를 줄 수 있다.
.InOutBounce로 탄성을 줄 수 있다. (이 때 In은 Fade In 처럼 시작할 때 효과, Out은 Fade Out 처럼 끝날 때 효과이다. InOutBounce는 시작과 끝에 Bounce 효과를 넣겠다는 뜻이다.

텍스트도 사용가능하다. Tween은 컴포넌트에 따라 매개변수가 다르고 text의 경우 ScrambleMode라는 매개변수가 있는데 이를 활용하면 아래와 같은 연출이 가능하다.
public class MyText : MonoBehaviour
{
void Start()
{
//RectTransform rt = GetComponent<RectTransform>();
//rt.DOAnchorPosX(0, 5).SetDelay(1.5f).SetEase(Ease.InOutBounce);
TMP_Text tmp_text = GetComponent<TMP_Text>();
tmp_text.DOText("DOTween Example", 2, true, ScrambleMode.All).SetDelay(2);
}
}

DOTween Pro는 컴포넌트 기능이 추가돼있다.


하단의 None을 누르면 사용가능한 함수들이 모두 뜬다

원하는 매개변수 값을 넣고 실행시켜보자.


직접 게임을 실행하지 않고도 상단의 Preview Controls에서 Play를 눌러도 에디터 상에서 바로 확인할 수 있다.
여러 Tween을 실행하고 싶으면 컴포넌트에 DOTween Animation을 여러 개 넣으면 된다.
이처럼 DOTween을 알면 실제 인-게임 오브젝트의 이동이나 UGUI를 구성할때 굉장히 간단한 코드로 쉽게 구현할 수 있다.
무엇보다 DOTween 함수가 굉장히 많기 때문에 하나하나 잘 알아가면서 적절한 효과를 잘만 준다면 굉장히 좋은 제작 효율로 다이나믹하고 흥미로운 Tween 기능을 적용할 수 있을 것 같다.
공식 홈페이지에서 적용 가능한 컴포넌트와 컴포넌트 별 사용 함수 및 매개변수를 모두 확인할 수 있다.
