스니펫TWEEN입문자GUI 애니메이션

GUI 애니메이션 만들기

TWEEN을 활용하여 GUI 애니메이션을 만듭니다.


gui-animation_result


GUI 애니메이션은 GUI의 Offset을 조절하여 만들 수 있습니다.
TWEEN의 .easing().yoyo()를 사용합니다.

GUI에 애니메이션을 적용할 이미지 추가하기

애니메이션을 적용할 이미지를 GUI에 추가해줍니다.


gui-animation_step-1 GUI에 이미지 추가하기

이미지 GUI 기본 설정하기

a. 이미지의 사이즈를 설정해줍니다.

비율이 유지되도록 Maintain AspectRatio를 켜주고, 단위를 퍼센트(%)로 바꾼 후 사이즈를 조정해줍니다.


gui-animation_step-2-a 이미지 사이즈 설정하기

b. 이미지의 시작위치를 설정해줍니다.

Anchor를 통해 이미지의 기준점을 잡아주고 Offset을 조정해줍니다.


gui-animation_step-2-b 이미지 시작위치 설정하기
💡

반응형 GUI를 구성하기 위해서는 반드시 단위를 px에서 %(퍼센트)로 변경해주어야 합니다.
추가로 비율 유지 여부에 따라 Maintain AspectRatio를 ON/OFF 해주면 됩니다.

GUI 애니메이션 TWEEN 스크립트 작성하기

이미지 GUI에 오브젝트(클라이언트) 스크립트를 추가해줍니다. TWEEN을 통해 이미지의 Offset을 변경해줍니다.
offset 객체는 간략하게 본다면 { x : { value : Number }, y : { value : Number } }로 구성되어 있기 때문에 한 축으로만 값을 변경하고 싶다면 ui.offset.y를 TWEEN의 시작객체로 사용해주어야 합니다.

.yoyo()를 사용하기 때문에 GUI 애니메이션 시간은 tween.to(object, duration)에서 duration의 2배가 됩니다. .easing()을 통해 객체의 움직임(보간 방정식)을 변경할 수 있습니다.


gui-animation_easing

TWEEN.Easing.Exponential.InOut

const ui = GUI.getObject('Copy_notification.png(9cf)');
const tween = new TWEEN.Tween(ui.offset.y);
// GUI 애니메이션 시간 조정 가능, 기본은 1000ms
tween.to({ value : 20 });
// .easing()을 통해 움직임(보간 방정식)을 변경할 수 있습니다.
tween.easing(TWEEN.Easing.Exponential.InOut)
.yoyo(true).repeat(1);

TWEEN의 기본 전환시간은 1000밀리초, 즉 1초입니다.

특정 이벤트가 발생했을 때 TWEEN 실행시키기

아래는 키보드의 c가 눌렸을 때, TWEEN을 실행해주는 예시입니다.
해당 TWEEN을 실행시키고 싶은 이벤트가 발생했을 때, tween.start()를 사용해주면 됩니다.

// ...
 
function OnKeyDown(event) {
    if(event.code === 'KeyC') { 
        if(tween.isPlaying()) {
            tween.stop();
            ui.offset.y.value = -15 // 초기 위치
        }
        tween.start();
    }
}

GUI 애니메이션이 끝나기 전에 다시 시작된다면 다시 처음 위치에서 애니메이션이 실행될 수 있도록 정지시킨 후 위치값을 초기화해줍니다.