[2025/07/21]TIL

오수호·2025년 7월 21일

TIL

목록 보기
45/60

Timeline의 활용

타임라인을 활용한 스킬컷씬의 생성과정

  1. 타임라인을 만든다!

    	중요한 포인트는 세 가지이다.

    첫 번째는, TrackOffset이다. 트랙이 재생될 애니메이터의 위치의 offset을 어떻게 잡을 것인가? 를 설정해주는 부분이다. TrackOffset은 크게 두 가지로 나뉜다.
    하나는 Apply Scene Offsets은 씬에서의 위치를 기준으로 한다는 의미이다. 씬에서의 애니메이터의 위치를 기준으로 애니메이션클립이 재생된다.

    씬에서의 공격자의 위치를 기준으로 스킬 컷씬이 재생될 것이기 때문에 AttackerAnimationTrack의 Offset은 Apply Scene Offsets으로 설정해놓는다.

    다음은 Apply Transform Offsets이다. 애니메이션 클립이 재생될 위치가 절대좌표로 계산되어 재생된다.

    이펙트의 위치를 조절해 줄 EffectAnimationTrack과 카메라의 위치를 조절해줄 VirtualCameraAnimationTrack은 Apply Transform Offsets으로 설정해 준다. 이렇게 하면 절대좌표로 시작위치가 나오는데 어째서 이 설정을 골랐을 까?

    우선, 이렇게 만들게 된데에는 이유가 있다. 스킬 컷씬을 재생해 줄 VirtualCamera의 경우에는 이미 씬 상에 존재하고 있기때문에 Scene내에서의 위치를 기준으로 클립이 재생되는 Apply Scene Offsets로 설정하게되면, 미리 생성해놓은 버추얼 카메라의 움직임이 이미 위치해있던 좌표를 기준으로 움직이게 되므로 의도한 대로 움직이지 않는다. 이것은 이펙트를 표시해줄 위치도 마찬가지인데, 기존에 만들어 놓았던 VFX발생의 경우에는 따로 Effect가 출력될 위치를 표시해줄 빈 게임오브젝트가 따로 필요하지않았다. 하지만, 스킬 컷씬의 경우에는 이펙트가 출력될 위치가 완전히 제멋대로이다. 원하는 위치에 자유롭게 이펙트를 출력해주기 위해서는 스킬 이펙트가 출력될 위치를 타임라인 내에서 애니메이션을 통해서 위치를 정해주어야 했고, 이펙트가 출력될 타이밍은 Signal을 통해서 만들어주어야 했다. 그리고, 이 또한 Scene내에서 시작되는 위치를 결정하게 만든다면 의도한 대로 위치를 설정해주기 위해서는 그때그때 위치값을 초기화해주는 과정이 필요할 것이다. 이는 Apply Transform Offsets이나 Apply Scene Offsets이나 동일하지만, Apply Scene Offsets의 경우에는 Recorded Offsets기능을 사용할 수 없다.

    Recorded Offsets는 시작 위치에서 다시 추가적인 Offsets의 위치를 기록해놓을 수 있는 기능이다. 즉 시작 클립의 위치는 만약 Apply Transform Offsets라면 Track Offsets의 Position + Recorded Offsets 의 Position값이 된다. 우리가 만들 스킬 컷씬의 경우에는 버추얼카메라의 위치나 이펙트가 발생할 위치가 스킬 Timeline마다 다를 것이기 때문에 이 방식을 선택했다.

    그리고 결국 절대좌표로 시작위치를 설정하게 만들었기 때문에 Track의 위치를 runtime에서 설정해주어야한다. 이것이 두번째 중요한 점이다.

    
     if (track is AnimationTrack animationTrack)
     {
                   if (animationTrack.trackOffset == TrackOffset.ApplyTransformOffsets)
                   {
                       foreach (var clip in animationTrack.GetClips())
                       {
                           var animPlayableAsset = clip.asset as AnimationPlayableAsset;
                           if (animPlayableAsset != null)
                           {
                               animPlayableAsset.position = pos;
                               animPlayableAsset.rotation = rot;
                           }
                       }
     }
     

    애니메이션 트랙의 offset설정이 ApplyTransformOffsets라면 그 애니메이션 트랙안에 클립들을 모두 가져와서 해당 애니메이션 클립의 Track Offsets을 pos와 rot ( 공격자의 위치와 회전 값으로 초기화 ) 로 만들도록 하였다. 즉, 버추얼 카메라의 시작위치와 이펙트 발생위치가 모두 저 값으로 초기화 된다.

    세번 째 중요한 포인트는 앞서 설명한 Recorded Offsets이다. 결국 첫 위치를 일괄적으로 초기화 해준 것이기 때문에 실제 타임라인이 진행될 때의 초기위치는 Recorded Offsets을 통해 정하게 만들어주어야 한다. 이는 실제로 타임라인을 진행시켜보며, 세부적인 값을 완성해 나가야 한다.

profile
게임개발자 취준생입니다

0개의 댓글