내일배움캠프/Unity

유니티 추가기능 - DOTween 2

서보훈 2024. 9. 13. 16:49

2024.09.10 - [내일배움캠프/Unity] - 유니티 추가기능 - DOTween

 

유니티 추가기능 - DOTween

이번엔 유니티 자체기능이 아닌, 에셋스토어에서 받아서 사용하는 추가기능인 DOTween에 대해서 정리하겠습니다. https://assetstore.unity.com/packages/tools/animation/dotween-hotween-v2-27676 DOTween (HOTween v2) | 애

gamerscode.tistory.com

 

DOTween 시퀀스 기능을 추가로 정리하겠습니다.


CallBack()

Append, Join 에 추가적으로 붙어서 사용됩니다.

이전에 붙은 시퀀스 기능을 수행한 후, Callback 에 지정된 함수를 실행합니다.

public GameObject target;
private float moveSpeed = 1f;

Sequence cubeMove;

void Start()
{
    cubeMove = DOTween.Sequence().SetAutoKill(false)
        .Append(transform.DOMove(target.transform.position, moveSpeed))
        .Append(transform.DORotate(new Vector3(90, 90, 0), moveSpeed))
        .Join(transform.DOScale(3, moveSpeed))
        .AppendCallback(DebugOne);
}

private void DebugOne()
{
    Debug.Log("AppendCallback");
}

 

이전 시퀀스인 이동, 스케일증가, 회전이 실행된 후, 지정해준 함수의 기능이 작동하는것을 볼 수 있습니다.

 


Insert

이미 존재하는 시퀀스에 추가로 입력하여 사용합니다.

지정한 시간이 지난 후, Insert에 입력한 시퀀스 내용을 수행합니다.

Sequence cubeMove;

void Start()
{
    cubeMove = DOTween.Sequence().SetAutoKill(false)
        .Append(transform.DOMove(target.transform.position, moveSpeed))
        .Append(transform.DORotate(new Vector3(90, 90, 0), moveSpeed))
        .Join(transform.DOScale(3, moveSpeed));

    cubeMove.Insert(1f, transform.DOMoveX(-1, 1));
}

 

기존에 정해준 시퀀스가 수행되던중, 1초가 지나면 Insert로 추가된 X를 -1로 1초 걸려서 움직임을 수행하는것을 볼 수 있습니다.

 


Prepend

가장 뒤가 아닌, 시퀀스에 가장 앞에 명령을 입력하는 함수입니다.

 

public GameObject target;
private float moveSpeed = 1f;

Sequence cubeMove;

void Start()
{
    cubeMove = DOTween.Sequence().SetAutoKill(false)
        .Append(transform.DOMove(target.transform.position, moveSpeed))
        .Append(transform.DORotate(new Vector3(90, 90, 0), moveSpeed))
        .Join(transform.DOScale(3, moveSpeed))
        .Prepend(transform.DOMove(target.transform.position * -1, 1));
}

Prepend 함수가 시퀀스의 가장 뒤에 있는데도,  위에 적힌 Append 보다 먼저 수행되어 (-2, -2) 지점에 도착한 뒤(2, 2) 지점으로 이동하는 모습을 볼 수 있습니다

(target의 좌표가 (2, 2, 0) 입니다.)


SetRelative

현재위치를 (0, 0, 0)으로 두고 움직입니다.

만약 (1, 0, 0) 에 있는 물체에 DOMoveX(2, 1).SetRelative 를 해주면 물체는 (3, 0, 0) 위치로 이동하게됩니다.

Sequence cubeMove;

void Start()
{
    cubeMove = DOTween.Sequence().SetAutoKill(false)
        .Append(transform.DOMove(target.transform.position, moveSpeed))
        .Append(transform.DORotate(new Vector3(90, 90, 0), moveSpeed))
        .Join(transform.DOScale(3, moveSpeed))
        .Append(transform.DOMoveY(-2, 1).SetRelative());
}

 

마지막 시퀀스에 (2, -2, 0) 이 아닌, (2, 0, 0) 으로 움직이는것을 볼 수 있습니다

 


일단 여기까지 하겠습니다.

이후에 추가 내용이 이해되면 3번째 포스팅일 만들게될 수 도 있을것같네요

'내일배움캠프 > Unity' 카테고리의 다른 글

유니티 기능 - Rule Tile  (0) 2024.10.07
유니티 기능 - 타일맵  (0) 2024.10.07
유니티 추가기능 - DOTween  (0) 2024.09.10