TIL

DOTween의 기본 메서드

Jooglorystar 2025. 4. 2. 23:05

 

DOTween은 Tween기반으로 애니메이션을 관리할 수 있는 도구이며, 유니티 애셋 스토어에서 찾을 수 있다.

 

https://assetstore.unity.com/packages/tools/animation/dotween-hotween-v2-27676

 

DOTween (HOTween v2) | 애니메이션 도구 | Unity Asset Store

Use the DOTween (HOTween v2) tool from Demigiant on your next project. Find this & more animation tools on the Unity Asset Store.

assetstore.unity.com

 

자세한 내용은 DOTween 문서에서 확인할 수 있다.

https://dotween.demigiant.com/documentation.php

 

DOTween - Documentation

Nomenclature Tweener A tween that takes control of a value and animates it. Sequence A special tween that, instead of taking control of a value, takes control of other tweens and animates them as a group. Tween A generic word that indicates both a Tweener

dotween.demigiant.com

 

 

다른 애샛들처럼 Pachage Manager에서 다운로드 후 임포트하여 적용할 수 있다.

 

DOTween을 이용하면, Transform에서 DOTween의 메서드들을 이용하여 애니메이션을 적용할 수 있게 된다.

 

그 중 대표적인 것은 다음과 같다.

 

 

1. DOMove

transform.DOMove(_goalPoint.position, 5f);

 

Vector3를 향해 5f의 시간 동안 가는 메서드이다.

즉 Duration 값이 작아질수록 빠르게 이동하고, 높아질수록 느리게 이동한다.

 

같은 류의 메서드로 DOMoveX, DOMoveY, DOMoveZ와 같은 메서드가 있다.

해당 메서드들은 오브젝트의 Position의 해당 값이 되도록 이동한다.

 

예를들어 다음과 같이 작성할 수 있다.

 

transform.DOMoveX(0f, 5f);

 

만약 해당 오브젝트의 시작시 Position이 Vector(-3f, 15f, 2f)일 경우, 위 코드가 실행되면 Vector(0f, 15f, 2f)의 좌표로 5초동안 이동한다.

 

 

2. DOJump

 

transform.DOJump(_goalPoint.position, 5f, 1, 3f);

 

위 코드는 Vector3를 향해 5f만큼의 힘으로 3초동안 1번 점프하는 메서드이다.

위 코드의 경우 3초동안 한번에 _goalPoint.position까지 점프할 수 있다.

 

만약 위 코드를 아래와 같이 바꿀 경우,

transform.DOJump(_goalPoint.position, 5f, 3, 3f);

 

오브젝트는 _goalPoint.position까지 3번 콩 콩 콩 뛰는 느낌으로 점프한다.

 

 

3. DORotate, DORotateQuaternion

transform.DORotate(new Vector3(0f,0f,45f), 1f);

transform.DORotateQuaternion(Quaternion.Euler(0f, 0f, 45f), 1f);

 

1초 동안 transform.rotation이 (0f, 0f, 45f)이 되도록 회전한다.

DORotate은 Vector3값을 인수로 받으며, DORotateQuaternion은 쿼터니언 값을 인수로 받는다.

일단 위 두 코드는 같은 애니메이션을 출력한다.

 

근대 '나는 어떤 오브젝트를 제자리에서 회전하고 싶어'라고 생각하는 사람이 다음과 같은 코드를 실행하면 회전하지 않는다.

transform.DORotate(new Vector3(0f,0f,360f), 1f);

 

이는 기본적으로 위 코드는 다음 코드와 같기 때문이다.

 

transform.DORotate(new Vector3(0f,0f,360f), 1f, RotateMode.Fast);

 

따로 RotateMode라는 열거형을 지정하지 않으면, 해당 Vector3값이 되는 가장 빠른 방향으로 회전한다. 이를 다음과 같이 수정하면 한바퀴를 돌게 된다.

 

transform.DORotate(new Vector3(0f,0f,360f), _rotateDuration, RotateMode.FastBeyond360);
// 만약 다섯바퀴 돌리고 싶다면
transform.DORotate(new Vector3(0f,0f,360f * 5), _rotateDuration, RotateMode.FastBeyond360);

 

 

4. DOScale

transform.DOScale(new Vector3(2f,2f,2f), 3f);

 

3초동안 Scale이 2만큼 커지는 애니메이션이다.

 

 

5. DOPath

private Vector3[] _wayPointsPositions;

transform.DOPath(_wayPointsPositions, 5f);

 

DOMove가 한 지점을 향해 움직이는 메서드라면, DOPath는 여러 좌표를 순서대로 이동하는 메서드이다.

 

 

Scene 창에서 이처럼 경로를 표시해준다.

 

DORotate 메서드처럼 DOPath도 PathType 열거형을 통해 움직임을 바꿀 수 있다.

 

transform.DOPath(_wayPointsPositions, 5f, PathType.Linear);

transform.DOPath(_wayPointsPositions, 5f, PathType.CatmullRom);

 

PathType.Linear는 좌표간을 직선으로 움직이게 하며, 위와 같은 이미지의 괘도로 움직인다.

CatmullRom은 각 좌표를 부드러운 직선을 그리며 이동한다. Scene 창에는 다음과 같이 표시된다.

 

 

 

 

이처럼 DOTween을 이용하면 직관적인 코드로 다양한 움직임을 손쉽게 구현할 수 있다. 

또한 단순한 연출이라면 따로 Animator를 사용하지 않고   DOTween을 이용해 구현할 수 있다.