버튼 애니메이션 만들기
TWEEN을 활용하여 버튼 애니메이션을 만듭니다.
버튼 애니메이션은 버튼의 위치값을 조절하여 만들 수 있습니다.
TWEEN의 .yoyo()
를 사용합니다.
버튼 몸통 오브젝트와 버튼 오브젝트 추가하기
box나 cylinder와 중에 원하는 메쉬를 두 개 추가해줍니다.
![button-animation_step-1](/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fbutton-animation_step-1.ef163b0d.png&w=3840&q=75)
버튼 몸통과 버튼 기본 설정하기
a. 오브젝트의 이름을 각각 RedbuttonBody와 Redbutton으로 설정해줍니다.
![button-animation_step-2-a](/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fbutton-animation_step-2-a.72e0ef0f.png&w=3840&q=75)
b. 오브젝트를 원하는 색상으로 변경해줍니다.
![button-animation_step-2-b](/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fbutton-animation_step-2-b.465bbb0d.png&w=3840&q=75)
c. 버튼 몸통의 사이즈를 조절해줍니다.
![button-animation_step-2-c](/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fbutton-animation_step-2-c.b7bcb430.png&w=3840&q=75)
d. 버튼 몸통의 하위 자식으로 버튼을 넣어줍니다.
![button-animation_step-2-d](/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fbutton-animation_step-2-d.40b16ca4.png&w=3840&q=75)
e. 버튼의 사이즈를 조절해줍니다.
![button-animation_step-2-e](/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fbutton-animation_step-2-e.ca838a0c.png&w=3840&q=75)
f. 버튼의 끝위치를 확인해주고, 시작위치로 설정해줍니다.
![button-animation_step-2-f](/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fbutton-animation_step-2-f.28915166.png&w=3840&q=75)
![button-animation_step-2-g](/_next/image?url=%2F_next%2Fstatic%2Fmedia%2Fbutton-animation_step-2-g.6a6f71aa.png&w=3840&q=75)
💡
버튼을 하위 오브젝트로 추가하게 되면 버튼 몸통이 이동해도 따라 이동하게 되고, 버튼의 상대좌표를 통해 손쉽게 버튼 애니메이션을 만들 수 있습니다.
버튼 애니메이션 TWEEN 스크립트 작성하기
버튼 오브젝트에 오브젝트(클라이언트) 스크립트를 추가해줍니다. TWEEN을 통해 버튼의 위치값을 변경해줍니다.
.yoyo()
를 사용하기 때문에 버튼 애니메이션 시간은 tween.to(object, duration)
에서 duration의 2배가 됩니다.
const tween = new TWEEN.Tween(this.position);
// 버튼 애니메이션 시간 조정 가능, 기본은 1000ms
tween.to({ y : 0.1 }, 100) // duration
tween.yoyo(true).repeat(1);
TWEEN의 기본 전환시간은 1000밀리초, 즉 1초입니다.
버튼이 클릭되었을 때 TWEEN 실행시키기
.onClick()
을 통해 버튼이 클릭되었을 때, TWEEN을 실행해줍니다.
// ...
this.onClick(() => {
if(tween.isPlaying()) return;
tween.start();
});
버튼 애니메이션 TWEEN이 끝나고 다시 버튼이 눌릴 수 있도록 현재 TWEEN이 실행중인지 확인해줍니다.