Unity Dotween(글씨가 쳐지는듯한 효과 만들기)

    목차
728x90

기존에는 애니메이션을 움직일때 Mathf.Lerp등의 함수를 이용해서 값을 수학적으로 계산하기 때문에 불편한 점이 많았다.

 

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을 이용하면 진짜 편하게 애니메이션을 제작할 수 있다. 무료버전을 다운할수 있으며,

Pro버전은 기본 15달러에 50퍼 할인을 자주하는 편이여서 할인할때 사면 7.5달러에 구매가능하다.

 

http://dotween.demigiant.com/getstarted.php

 

DOTween - Get Started

Before anything else Step 1 Download DOTween and unzip it anywhere in your Unity Assets folder (just not inside the Editor, Plugins or Resources directories). Setup After importing a new DOTween update, you have to setup DOTween in order to import/re-impor

dotween.demigiant.com

공식 사이트에서도 사용법이 자세히 써져있기도 하다. 

하지만 다 영어로 써져있어서 구글 번역을 이용하는게 좋을거 같다.

다음은 닷트윈 사용법 예제이다. 

먼저 에셋 스토어에서 dotween을 다운받은 후에 쓰고싶은 스크립트에다가 using DG.Tweening; 을 선언해 줘야 한다.

포지션,회전,스케일,컬러 등 값의 변화를 조절할수 있고,텍스트같은 경우 타자가 쳐지는 듯한 타이핑효과도 만들수 있다.

 

그리고 다음과 같이 선언해주면 된다.

코드 예시를 들자면..

transform.DOMove(Pos, 5);

-현재 오브젝트를 5초에 Pos위치까지 이동(.SetEase를 추가 안할시에는 목적지에 가서 부드럽게 감속하는 변화가 일어남)

transform.DOMove(Pos, 5).SetEase(Ease.Linear);

-현재 오브젝트를 5초에 Pos위치까지 이동시킨다.( '.SetEase(Ease.Linear)'  를 추가하면 등속운동을 한다고 생각하면 됨!)

transform.DOMove(Pos, 5).SetEase(Ease.InExpo).SetEase(Ease.OutBounce);

-현재 오브젝트를 5초에 Pos위치까지 이동하지만 목적지에 빨리 도착하고 남는 시간동안 통통 튀면서 감속운동 등으로 효과를 만들 수 있다!

 

다음은 닷트윈을 이용한 타이핑을 쳐지는듯한 효과를 만드는 예시 스크립트이다.

private IEnumerator TextPreviewCor()
{
	for (;;)
	{
		this.txt.text = string.Empty;
		this.txt.DOText("텍스트가 쳐지는 듯한 효과를 만들수 있습니다.",3.7f * DataController.duSettingData[1].value,false, ScrambleMode.None, null);
		yield return new WaitForSeconds(DataController.duSettingData[1].value * 3.7f + 1f);
	}
	yield break;
}

코루틴을 만든다음에 지연 시키면 된다. 

	private void OnEnable()
	{
		this.cor = base.StartCoroutine(this.TextPreviewCor());
	}
	private void OnDisable()
	{
		if (this.cor != null)
		{
			base.StopCoroutine(this.cor);
		}
	}

그 다음에 호출하고 다시 지우면 된다!

 

까먹고 추가안한것이 있어서 추가로 수정하였습니다.

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

private Coroutine cor;

public Text txt;

Using문 선언하고 오브젝트를 선언해줘야만 합니다!

728x90