애니메이션 커브에 대해서 조금 더 알 수 있었던 핑퐁 기능 만들기였다.
🍑 핑퐁 기능 추가!!!!
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
public static Tween SetEase(this Tween tween, AnimationCurve ease, bool pingpong = false)
//ping pong: 다시 돌아오는 형태의 애니메이션
{
if (!tween.IsPlaying) //트윈이 플레이 중이지 않을 때 수정!
{
if (pingpong)//핑퐁을 한다면
{
Keyframe[] keyframes = new Keyframe[ease.length];
//애니메이션 커브의 키 프레임만큼 키프레임 배열 생성
for (int i = 0; i < ease.length; i++)
{
//일대일 매칭을 해서
keyframes[i] = ease.keys[i];
//정해진 기간내에 from으로 와야함.
//반절은 to로 반절은 from로 가야하기때문에 2로 나누어 줌!
keyframes[i].time = keyframes[i].time / 2;
}
//새로운 커브를 생성해 이전 ease와 교체
ease = new AnimationCurve(keyframes);
//핑퐁으로 모드를 변경!
ease.postWrapMode = WrapMode.PingPong;
}
tween.Ease = ease;
}
else
{
Debug.Log("tween is playing");
}
return tween;
}
|
💚 ease.Evaluate(time / duration)
를 통해서 총 애니메이션 기간에 대한 현재 애니메이션 타임의 값을 ease에서 얻을 수 있다. 이 값을 대상이 Transform(position, scale, rotate)이든지 MaskAbleGraphic(color, alpha), CanvasGroup(alpha)이든지 간에 값을 정해줄 수 있다.
나중에 애니메이션커브만 따로 포스팅을 해보겠다!