[Unity] DOTween 기본 사용법 1

Filed under tutorials, unity | Comments Off

(DOTween)

애셋스토어에서 DOTween을 받아서 유니티로 불러온다. 다른 미들웨어와는 달이 DOTween은 여기서 한 단계를 더 거쳐야 한다. 상단 메뉴에서 Tools로 가서 DOTween Utility Panel을 선택한다. 아래와 같은 창이 열리면 Setup DOTween 버튼을 누른다. 곧 설치가 끝난다. 이 창은 후에 기본 설정을 바꿀때 다시 살펴본다.

dotween_utility

 

제작자 사이트의 문서를 보면 트윈을 활용할 수 있는 다양한 속성이 나열돼 있다. 트윈을 이해하기 위해 가장 기초적임 움직임을 만들어 본다. 문서에서 Transform의 Move를 찾는다.

dotween_Trans

위 설명에 따르면, DOMove는 대상을 특정 시간에 걸쳐 Vector3로 지정된 목적 지점까지 이동시킨다. 그럼 원점에 있는 게임오브젝트를 3초에 걸쳐, 3유닛 위로 이동시키는 트윈을 만들어 본다.

  • 목표 지점(to) : Vector3 (0f, 3f, 0f)
  • 시간(duration) : 3f
  • 스냅핑(snapping) : false (스냅핑을 사용하면, 게임오브젝트가 정수 단위(1, 2, 3, 4…)로 이동한다)

이 내용을 새로운 스크립트의 Start() 함수에 담는다. 일단 스크립트에서 DOTween을 사용하기 위해서는 스크립트에 새로운 네임스페이스(DG.Tweening)를 추가해야 한다.


using UnityEngine;
using System.Collections;
using DG.Tweening;

public class TweenExample_00 : MonoBehaviour {

// Use this for initialization
void Start () {

// DOMove(목표지점, 시간, 스냅핑)
transform.DOMove(new Vector3(0f, 3f, 0f), 3f, false);

}

// Update is called once per frame
void Update () {

}

}

플레이르 통해 게임오브젝트의 움직임을 확인한다(실제로는 게임오브젝트가 3 유닛 높이에 멈춰있다. GIF 이미지의 반복재생 때문에 움직임이 반복되는 것으로 보이는 것이다).

Move

이번에는 이동 대신에 회전을 제어해 본다.

dotween_Rot
  • 목표 각도(to) : 몇 도까지 또는 몇 도만큼 회전시킬 것인가?
  • 시간(duration) : 얼마 동안 회전시킬 것인가?
  • 회전 방식(mode) : 어떤 방식으로 회전시킬 것인가?
    • Fast (기본값): 목표 각도까지 가장 가까운 방향으로 회전한다. 360도 이상 회전하지 않는다. 현재 각도가 15도이고, 목표가 720도라면 역방향으로 15도 만큼 회전한다.
    • FastBeyond360: 360도를 넘어 목표 각도까지 회전한다. 현재 각도가 15도이고, 목표가 720도라면 순방향으로 705도 회전한다.
    • WorldAxisAdd: 월드 좌표계를 기준으로 현재 상태에서 목표 각도 만큼 더 회전한다.
    • LocalAxisAdd: 로컬 좌표계를 기준으로 현재 상태에서 목표 각도 만큼 더 회전한다.

위 내용을 바탕으로 게임오브젝트가 1초 동안 두 바퀴(720도) 회전하게 만든다.


using UnityEngine;
using System.Collections;
using DG.Tweening;

public class TweenExample_00 : MonoBehaviour {

	// Use this for initialization
	void Start () {
        //DOMove(목표 지점, 시간, 스냅핑)
        //transform.DOMove(new Vector3(0f, 3f, 0f), 3f, false);

        //DORotate(목표 각도, 시간, 회전방식)
        transform.DORotate(new Vector3(0f, 720f, 0f), 1f, RotateMode.WorldAxisAdd);
	}

	// Update is called once per frame
	void Update () {

	}
}

Rotate

이처럼 트윈 엔진에서는 스크립트에서 Translate, Rotate, Lerp, deltaTime 등을 이용하는 방식보다 훨씬 직관적으로 게임오브젝트의 움직임 또는 다른 속성의 값을 제어할 수 있다. DOTween에서 제어할 수 있는 대표적인 컴포넌트는 다음과 같다.

  • Transform
  • Camera
  • Light
  • Material
  • Rigidbody / Rigidbody2D
  • TrailRenderer
  • uGUI

이 중에서 재질의 색상을 바꾸는 기능을 직접 이용해 본다.

dotween_mat
  • 목표 색상(to) : 어떤 색상으로 바꿀 것인가?
  • 시간(duration) : 색상을 바꾸는 시간은?

위 내용을 바탕으로 재질의 색상이 3초에 걸쳐 빨강색으로 바뀌게 만든다.


using UnityEngine;
using System.Collections;
using DG.Tweening;

public class TweenExample_00 : MonoBehaviour {

private Renderer _renderer;

// Use this for initialization
void Start () {
//DOMove(목표 지점, 시간, 스냅핑)
//transform.DOMove(new Vector3(0f, 3f, 0f), 3f, false);

//DORotate(목표 각도, 시간, 회전방식)
//transform.DORotate(new Vector3(0f, 720f, 0f), 1f, RotateMode.Fast);

//DOColor(목표 색상, 시간)
_renderer = GetComponent<Renderer>();
_renderer.material.DOColor(Color.red, 3f);
}

// Update is called once per frame
void Update () {

}
}

Color.gif

다음 포스트에서는 값을 변환시키는 방식(Easing)을 어떻게 제어하고, 트윈의 반복 여부와 지연을 설정하는 방법을 살펴본다.

Comments are closed.