UE4 Timeline 타임 라인
카테고리: UE4Docs
태그: UE4 Game Engine
🚖 타임라인 노드 설명
이런 애니메이션을 주기 위해선 언리얼의 타임라인 기능을 사용하면 된다.
위와 같이 타임라인 만들기
노드를 추가한다. 이 타임라인의 이름은 Damage Text TimeLine
으로 지어보았다. 타임 라인 노드를 더블 클릭하면 타임 라인 편집기가 나오는데 이 편집기를 통해 시간에 따라 어떤 값을 리턴시킬지 그래프를 그릴 수 있다. 타임 라인 노드는 매 시간마다, 시간에 따라 바뀌는 값을 리턴할 수 있다.
- 🌼타임라인 노드🌼
- 입력
- Play : 현재 시간에서 정방향으로 타임라인 재생
- Play from Start : 처음부터 정방향으로 타임라인 재생
- Stop : 현재 시간에서 타임 라인 재생을 정지
- Reverse : 현재 시간에서 타임 라인을 역방향 재생
- Reverse from End : 끝 시간에서부터 타임 라인을 역방향 재생
- Set New Time : 현재 시간을 New Time 입력에 설정된 값(이나 입력)으로 설정
- New Time : Set New Time 입력이 호출되었을 때 타임라인이 점프해 갈 수 있는 시간을 초 단위로 나타내는 float 값을 받는 데이터 핀
- 출력
- Update : 타임 라인이 실행되는 동안, 매 시간마다 이 신호가 출력된다. 즉, 이 핀과 연결되면 매 시간동안 실행될 수 있다.
- Finished : 타임 라인 재생이 다 끝났을 때 한번 출력되는 신호다. 타임라인 재생이 다 끝난 후 실행시킬 것이 있을 땐 이 핀에 연결한다. Stop 함수로는 발동되지 않는다.
- Direction : 타임라인 재생 방향을 나타내는 Enum 데이터를 출력
- 만든 트랙들.. : 타임라인은 Vector Track, Float Track 등등 여러 타입의 트랙을 가질 수 있는데 각각의 트랙에서 매 시간마다 출력되는 값.
- 입력
노드를 더블 클릭하면 타임 라인 편집기를 실행할 수 있다.
Vector Track
설명과 예시
왼쪽 상단의 두 번째 버튼을 클릭하면 Vector Track 을 추가할 수 있다. 이렇게 벡터 트랙을 추가하면 X, Y, Z 이렇게 3 가지 커브를 사용할 수 있는데 시간에 따라 각기 다른 3 가지 값을 출력해야 한다면 3 개 커브를 다 사용하는거고, 나는 Damage Text 를 하늘로 승천시킬거라 Z 축 값을 변경시킬 한 가지의 값만 있으면 된다. 따라서 Z 커브 하나만 사용하였다.(단순히 X, Y, Z 이름의 3 개의 커브를 사용하는 것일 뿐 실제 X, Y, Z 축에 대응하는건 아니다.) 편하게 Z 커브에만 Key 를 추가하기 위해 X, Y 커브는 자물쇠로 잠그고 안보이게 눈 감겨 줌.
- 타임 라인의 가로축은 시간, 세로축은 값이다.
- Z 커브에 Key 2 개 추가함
- 시간 0.7 의 값은 0
- 시간 1.1 의 값은 125
- 이 타임 라인의 전체 길이는 1.10 으로 설정하였다.
- Z 커브에 Key 2 개 추가함
위 타임 라인은 0.7초까지는 Z=0 만 출력하다가 [0.7 초 ~ 1.1 초] 구간 동안에는 Z 값을 0 에서 부터 125에 가까워지는 값을 출력한다. 대략 0.9 초에는 약 Z=67 정도의 값을 출력할 것이다.
이렇게 이 타임라인 노드로 0.7초이후부터 1.1초까지 (0 👉 125)에 가까워지는 Z값들을 매 시간마다 리턴할 것이다. 그리고 (0 👉 125)이 값들을 Damage Text의 초기 Z 축 위치에다가 매 시간마다 델타 값으로 더해주어 서서히 하늘로 승천하게 할 것이다.
🚩 “CharDamageTextBP” 액터 블루프린트 이벤트그래프
- 게임이 시작되면, “CharDamageTextBP” 액터가 생성 및 활성화 되자마자 Damage Text 의 시작 위치를 저장해둔다.
- Vector 타입의
StartPos
변수를 만들어 이에 저장.Get Actor Location
으로부터 (self = Damage Text인 “CharDamageTextBP” 액터 블루프린트) 현재 위치를 받아와서StartPos
에 저장.- 시작 위치가 아닌현재 위치에다가 더해주면 계속해서 매 프레임마다 누적되어 미친듯이 하늘로 승천해버릴 것이다. 초기 위치에다가 타임 라인에서 출력되는 값을 매 시간마다 더해주어야 함.
- Vector 타입의
- 타임 라인을 실행한다. 👉 0 ~ 1.1 초 동안 실행 됨
- Update 출력핀 👉 타임 라인이 실행되는 동안 매 프레임 마다 실행 됨
- Damage Text의 초기 위치인
StartPos
로부터 타임 라인이 매 시간동안 출력하는 Vector 값을 더한 값을Text Render
컴포넌트의 위치로 설정한다.(Set World Location)- X, Y 커브는 쓰지 않아 내내 값이 0 이긴 하지만 그래도 Break Vector로 Z 값만 추출한 후, 이를 (0, 0, Z) 벡터로 만든다. 이것이 데미지 텍스트의 초기 위치로부터 더해주어야 할 값읻. 평행 이동할 델타 벡터.
- Set World Location 은 컴포넌트의 위치를 설정하는 함수이다.
- Damage Text의 초기 위치인
- Finished 출력핀 👉 타임 라인이 전체 길이에 도달해 끝나면 실행 됨
- 타임 라인이 끝나면, 즉 1.1 초동안 다 실행 완료 됐다면
Destroy Actor
(타겟 self)를 실행하여 “CharDamageTextBP” 액터를 파괴한다.
- 타임 라인이 끝나면, 즉 1.1 초동안 다 실행 완료 됐다면
- Update 출력핀 👉 타임 라인이 실행되는 동안 매 프레임 마다 실행 됨
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기