시퀀스
전 글에도 언급했지만, DOTween의 Tween 종류에는 2가지가 있다.
Tweener : 값을 제어하고 애니메이션을 하는 트윈 (DOTween에서 모든걸 수행하는 일꾼이라 보면 됨)
Sequence : 값을 제어하지는 않지만 그룹 애니메이션을 하는 특수 트윈
시퀀스는 Tweener의 애니메이션들을 관리하는 그룹이라고 생각하면 편하다.
이 시퀀스라는 트윈을 가지고 편리하게 연결된 동작들을 만들 수 있다.
DOTween의 도큐먼트를 보면 시퀀스는 여러가지 함수를 가지고 있는데, 하나하나 파보도록 하자.
시퀀스 만들기
DG.Tweening 네임스페이스를 추가해주고, 아래와 같은 코드를 적는게 시퀀스 생성의 전부다.
Sequence mysquence = DOTween.Sequence();
기본적인 기능을 테스트 해보기 위해 빨,주,노,초 4개의 네모를 만들었다.
' squares ' 라는 트랜스폼 배열을 만들어서 집어넣어 주었다.
Append
시퀀스의 가장 뒤에 트윈을 추가하는 함수다.
void Start()
{
Sequence mysquence = DOTween.Sequence();
mysquence.Append(squares[0].DOMoveY(2, 1));
mysquence.Append(squares[1].DOMoveY(2, 1));
mysquence.Append(squares[2].DOMoveY(2, 1));
mysquence.Append(squares[3].DOMoveY(2, 1));
}
테스트를 위해서 Start 함수에 Append 함수를 사용해서 네모들이 순서대로 1초동안 y값 2까지 가도록 가는 코드를 작성했다.
의도한대로 잘 올라간다.
AppendInterval
이 함수를 통해 Append후에 간격을 줄 수 있다.
void Start()
{
Sequence mysquence = DOTween.Sequence();
mysquence.Append(squares[0].DOMoveY(2, 1));
mysquence.Append(squares[1].DOMoveY(2, 1));
mysquence.AppendInterval(1.0f);
mysquence.Append(squares[2].DOMoveY(2, 1));
mysquence.Append(squares[3].DOMoveY(2, 1));
}
2번째 네모까지 올리고 1초라는 간격을 줘봤다.
주황색 네모까지 올라가고 나서 1초라는 간격이 생긴것을 볼 수 있다.
AppendCallback
Append에 콜백을 추가 할 수 있다.
void Start()
{
Sequence mysquence = DOTween.Sequence();
mysquence.Append(squares[0].DOMoveY(2, 1));
mysquence.Append(squares[1].DOMoveY(2, 1));
mysquence.AppendInterval(1.0f);
mysquence.Append(squares[2].DOMoveY(2, 1));
mysquence.Append(squares[3].DOMoveY(2, 1));
mysquence.AppendCallback(Set_Scale);
}
public void Set_Scale()
{
for(int i= 0; i < squares.Length; i++)
{
squares[i].DOScale(3, 1.0f);
}
}
마지막 네모까지 올라가고 나서,
전체 네모의 크기를 크게 해주는 Set_Scale함수를 콜백에 추가해봤다.
다 끝나고 등록된 콜백이 실행되는것을 볼 수 있다.
Insert
말그대로 삽입하는 함수인데, 진행 시간을 추가로 인자값으로 입력 해주어야 한다.
void Start()
{
Sequence mysquence = DOTween.Sequence();
mysquence.Append(squares[0].DOMoveY(2, 1));
mysquence.Insert(0.5f, squares[1].DOMoveY(2, 1));
mysquence.Insert(0.5f, squares[2].DOMoveY(2, 1));
mysquence.Insert(0.5f, squares[3].DOMoveY(2, 1));
}
첫번째 트윈만 append로 추가해주었고,
나머지는 Insert를 활용해서 시퀀스 시작 0.5초 후에 나머지 3개의 네모가 올라가도록 설정했다.
의도한대로 잘 올라간다.
Insert도 콜백이 있지만, Append 콜백과 쓰는법이 다르지 않기 때문에 생략한다.
Join
join은 추가한 트윈과 함께 실행을 하게하는 함수다.
void Start()
{
Sequence mysquence = DOTween.Sequence();
mysquence.Append(squares[0].DOMoveY(2, 1));
mysquence.Join(squares[1].DOMoveY(2, 1));
mysquence.Append(squares[2].DOMoveY(2, 1));
mysquence.Join(squares[3].DOMoveY(2, 1));
}
주황네모와 초록 네모는 왼쪽의 박스가 올라갈때 Join하도록 코드를 작성했다.
Prepend
맨 앞에 트윈을 추가하는 함수다.
void Start()
{
Sequence mysquence = DOTween.Sequence();
mysquence.Prepend(squares[0].DOMoveY(2, 1));
mysquence.Prepend(squares[1].DOMoveY(2, 1));
mysquence.Prepend(squares[2].DOMoveY(2, 1));
mysquence.Prepend(squares[3].DOMoveY(2, 1));
}
네모의 순서대로 코드를 작성했지만, 함수가 Prepend기 때문에 네모는 역순으로 올라올것이다.
Prepend도 인터벌과 콜백이 존재하지만, Append와 사용법이 다를것이 없기 때문에 생략한다.
붙여 쓰기
내가 설명을 위해 한줄한줄 입력했지만, 아래 처럼 .을 붙여서 추가하거나, join시키거나 insert시키거나 무궁무진하게 활용이 가능하다.
void Start()
{
Sequence mysquence = DOTween.Sequence();
mysquence.Append(squares[0].DOMove(squares[3].position,1.0f).SetLoops(2,LoopType.Yoyo))
.Append(squares[1].DOMove(squares[3].position, 1.0f).SetLoops(2, LoopType.Yoyo))
.Append(squares[2].DOMove(squares[3].position, 1.0f).SetLoops(2, LoopType.Yoyo));
}
1,2,3 번 네모가 순차적으로 4번 네모의 위치까지 갔다가 오는 코드를 작성했다.
시퀀스를 알아둔다면 정말 무궁무진하게 활용이 가능할것 같다.
'게임 엔진 > Unity' 카테고리의 다른 글
유니티 에셋공부 <Feel> - (1) (0) | 2023.01.18 |
---|---|
유니티 에셋공부 <DOTween Pro> - (3) (0) | 2023.01.18 |
유니티 에셋공부 <DOTween Pro> - (1) (2) | 2023.01.15 |
[Unity] 포톤서버를 이용해 간단한 말풍선 채팅 만들어보기 (0) | 2022.09.25 |
유니티 박스(장애물) 높이별 점프 구현해보기 (0) | 2022.08.15 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!