[Blueprint] Timeline
문제 상황
미사일 런처를 구현하는 중, 조준 중일 때는 미사일이 플레이어의 에임을 따라오게 구현하고 싶었다.
그래서, 미사일을 스폰하고 정렬해 플레이어의 에임을 따라오게 하는 것까지는 성공했는데, 무거운 느낌을 주기 위해서 애니메이션을 조금 느리게, 플레이어의 움직임보다 살짝 늦게 따라오도록 구현하고 싶었다.
이를 위해 기능을 찾던 중, Timeline 노드가 좋아 보여서 Lerp 노드와 함께 써보기로 결정했다.
기능 이해와 테스트
내가 느낀 Timeline 노드는 그냥 선형 보간(Linear Interpolation)처리를 위한 Lerp 노드와 크게 다를 바 없어 보였다. 다만, 한 가지 차이가 있다고 하면 보간의 대상(float, vector, color, event 등등..)과 보간 방식을 더 자유롭게 설정할 수 있다는 점 같아보였다.
그럼 이제 이 기능을 바탕으로 내가 원하는 걸 구현해야 하는데.. 사실 Timeline 노드가 딱히 필요가 없다는 걸 깨닫고 Lerp 노드만 사용해서 구현했다.
그래서 이번 글에서는 간단하게 Timeline 노드를 테스트하고 어떤 상황에 활용할 수 있는지 정리하며 마무리 지으려고 한다. 우선, 블루프린트는 아래와 같이 구성했다.
위의 블루프린트를 간단하게 설명하자면 box collision이 있는 BP actor에 다른 오브젝트가 겹치면 화염 이펙트의 scale이 5초에 걸쳐 최대 8까지 커지고, box collision에 겹치는 오브젝트가 없으면 역으로 5초에 걸쳐 0까지 줄어들게 된다. 결과는 아래 항목에서 확인하자.
결과
앞서 설정한 대로 5초에 걸쳐 scale이 커졌으며, scale 증가 흐름 역시 의도한 대로 동작함을 확인할 수 있다.
배운 점
- timeline 노드에는 vector 등의 특정 데이터를 입력하지 못하니, 이를 원한다면 float 형으로 0부터 1까지의 보간 처리된 graph 추이만 가져오고, 이를 Lerp 노드와 연계해 사용하자.
(번외) 기능 개발이 안 된다고 TIL을 미루지 말자.. 더 하기 싫어진다.