오늘은 옵션 값을 세팅하는 것에 대해서 공부해봤다.
원래는 써보면서 하나씩 찾아나갔어야 하는 내용들인거 같은데..
네이버 두야라는 분의 블로그를 보며 정말 많은 도움을 받았다.
DOTween Pro를 더 자세하게 공부하실 분들이라면 정말 추천드린다.
[Asset] Unity3D 'DOTween'.. : 네이버블로그 (naver.com)
오늘 내용은 위 사이트의 글을 보고 공부한 내용을 정리해 봤다.
SetRelative (상대값)
squares[0].DOMoveY(4, 1);
위와 같이 코드를 작성한다면, Y값 4로 이동하라는 뜻이다.
개발을 하다보면 어떤 위치로 정확하게 이동해야 할때도 있지만, 내 위치에서 어떤 값 만큼 이동해야 할 때도 있다.
이 상대값 설정은 그 부분을 가능하게 한다.
//Y값 4로 이동
squares[0].DOMoveY(4, 1);
squares[1].DOMoveY(4, 1);
//현재 위치에서 Y값 4만큼 이동
squares[2].DOMoveY(4, 1).SetRelative();
squares[3].DOMoveY(4, 1).SetRelative();
네모의 Y 값을 전부 -4에 두고 1,2번째 네모는 Y값 4로 이동,
3,4번째 네모는 현재 위치에서 4만큼 이동하도록 코드를 작성했다.
1,2번째 네모들은 Y값 4,
3,4번째 네모들은 위쪽으로 4만큼 이동해서 0이 된것을 볼 수 있다.
From
예전 포스팅에서도 계속 다뤘지만, 초기값을 바꿔준다.
squares[0].DOMoveY(4, 1);
squares[1].DOMoveY(4, 1).From();
위 처럼 코드를 작성하면
첫번째 네모는 현재 위치에서 Y값 4까지 이동하지만,
두번째 네모는 From()을 붙여서 초기값을 세팅해줬기 때문에 Y값 4의 위치에서 시작해서 반대로 이동한다.
예상한대로 잘 작동한다.
From의 상대값 설정
squares[0].DOMoveY(4, 1).SetRelative();
squares[1].DOMoveY(4, 1).SetRelative().From();
Y값 4라는 위치가 아닌, 내 위치에서부터 4라는 값만큼 이동하도록 상대적인 값을 설정했다.
현재 y의 위치가 -4 이기 때문에, 첫번째 네모는 0까지 이동해야 하며, 두번째 네모는 0부터 -4까지 이동해야한다.
두번째 네모에 분명 SetRelative() 를 써서 상대적인 값을 세팅해줬음에도 불구하고,
4라는 위치부터 내려오는것을 알 수있다.
squares[1].DOMoveY(4, 1).From().SetRelative();
SetRelative가 From 뒤에 있어야하나? 라고 생각하며 코드의 순서를 바꿔봐도 같은 결과값이 나왔다.
From 세팅을 찾아가보면 오버로딩된 3개의 함수를 볼 수 있는데, 그중에 isRelative라는 bool값을 매개변수로 받는 함수도 있다.
바로 이것을 활용해줘야 내가 기대한대로 작동한다.
squares[0].DOMoveY(4, 1).SetRelative();
squares[1].DOMoveY(4, 1).SetRelative().From(true);
바로 인자값으로 true라는 값을 넣어주었다.
이제야 내가 기대한대로 잘 작동하는것을 볼 수 있다.
squares[1].DOMoveY(4, 1).SetRelative().From(-2,true);
이런식으로 아예 -2라는 값을 넣어서 초기 위치를 정할수도 있다.
SetSpeedBased - 속력 기준 설정
그동안 상자를 이동시킬때는 duration이라는 인자값을 이용해서 몇초만에 이동시킬 것인지를 정했다.
우리가 보통 캐릭터나 몬스터를 이동시킬때는 속력을 정해서 이동을 시킨다.
공부하기전 혼자 샤워를 하며 '몇초동안'을 인자값으로 입력해야 한다면 어떻게 계산해야할지를 생각하고 있었는데,
바로 이 내용이 나와서 반가웠다.
squares[0].DOMoveY(0, 5);
squares[1].DOMoveY(1, 5);
squares[2].DOMoveY(2, 5);
squares[3].DOMoveY(3, 5);
원래라면 이런식으로 코드를 작성했을때 5초동안 Y값 까지 이동을 해야하기 때문에,
가야하는 위치는 다르더라도 도착하는 시간은 똑같다.
첫번째 네모는 짧은 거리를 5초동안 이동해야 하기 때문에, 상당히 느려졌다.
squares[0].DOMoveY(0, 5).SetSpeedBased();
squares[1].DOMoveY(1, 5).SetSpeedBased();
squares[2].DOMoveY(2, 5).SetSpeedBased();
squares[3].DOMoveY(3, 5).SetSpeedBased();
이제 SetSpeedBased를 이용해서 속도를 지정해줬다.
소요시간이 아닌 속력으로 이동한다.(1초당 변화량)
이제 속력이 같기 때문에 가까우면 가까울수록 더 빨리 도착하는것을 볼 수 있다.
SetAs
트윈 설정값을 저장해놓고 바로바로 적용할 수 있는 함수이다.
SetAs를 파보면 Tween형 변수 혹은 TweenParams형 변수를 매개변수로 받는다.
TweenParams tweenParams = new TweenParams();
tweenParams.SetLoops(2,LoopType.Yoyo);
tweenParams.SetSpeedBased();
squares[0].DOMoveY(4, 5).SetAs(tweenParams);
squares[1].DOMoveY(4, 5).SetAs(tweenParams);
squares[2].DOMoveY(4, 5).SetAs(tweenParams);
squares[3].DOMoveY(4, 5).SetAs(tweenParams);
이런식으로 TweenParams형 변수를 선언하고 그 변수에 설정들을 세팅 해놓은 후에,
다른 트윈을 만들때 바로 SetAs를 사용해서 만들어놓은 세팅을 바로 적용시킬 수 있다.
하나하나 길게 코드를 적을 필요 없이 참 간단해졌다.
TweenParams tweenParams = new TweenParams();
tweenParams.SetLoops(2,LoopType.Yoyo);
tweenParams.SetSpeedBased();
Tween myTween = squares[0].DOMoveY(4, 5).SetAs(tweenParams);
squares[1].DOMoveY(4, 5).SetAs(myTween);
squares[2].DOMoveY(4, 5).SetAs(myTween);
squares[3].DOMoveY(4, 5).SetAs(myTween);
인자값으로 Tween형 변수도 넣을 수 있기 때문에, 위 코드도 똑같이 작동한다.
SetLink
오브젝트에 트윈을 연결해서 제어할 수 있는 세팅이다.
squares[0].DOMoveY(4, 1).SetLink(squares[0].gameObject, LinkBehaviour.RestartOnEnable);
이렇게 설정하면, 첫번째 네모의 DOMoveY의 제어를 두번째 네모에 연결시킨다.
LinkBehaviour 열거자를 확인해보면 상당히 많은 열거자들을 볼 수 있는데,
나는 그중에 다시 켜지면 애니메이션을 재시작하는 RestartOnEnable을 선택했다.
하지만 위 코드처럼 작성하면 제대로 작동하지 않는데,
그 이유는 트윈의 행동이 끝나면 내부적으로 자동으로 트윈을 죽여버리기(kill) 때문이다.
squares[0].DOMoveY(4, 1).SetAutoKill(false).SetLink(squares[1].gameObject, LinkBehaviour.RestartOnEnable);
그래서 SetAutoKill을 false로 설정해두어야지만 우리가 의도한대로 실행이 가능하다.
두번째 네모를 껐다 켤때마다 우리가 설정한대로 작동하는것을 볼 수 있다.
SetId
트윈에 식별 번호나 문자열을 붙여주는 세팅이다.
squares[0].DOMoveY(4, 1).SetId(1).onComplete = ()=> DOTween.Rewind(1);
이런식으로 아이디를 붙여서 사용이 가능하다.
'게임 엔진 > Unity' 카테고리의 다른 글
유니티로 구글 애드몹(AdMob) 테스트 해보기 (0) | 2023.01.29 |
---|---|
유니티 에셋공부 <Feel> - (1) (0) | 2023.01.18 |
유니티 에셋공부 <DOTween Pro> - (2) (0) | 2023.01.17 |
유니티 에셋공부 <DOTween Pro> - (1) (2) | 2023.01.15 |
[Unity] 포톤서버를 이용해 간단한 말풍선 채팅 만들어보기 (0) | 2022.09.25 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!