시퀀서로 블루프린트에서 액터 리바인딩

시퀀스 저작 당시와 달라진 다이내믹 오브젝트에 시퀀스를 런타임 적용하는 방법을 보여드리는 예제입니다.

Windows
MacOS
Linux

게임플레이 용도로 시네마틱을 제작할 때, 시퀀서를 통해 런타임 동적 스폰되는 오브젝트에 애니메이션을 주고플 때가 있습니다. 예를 들어 경로를 따라 움직이는 애니메이션 오브젝트를 만드는데, 그 오브젝트를 게임플레이 도중 스폰되는 플레이어가 정의할 수 있는 것입니다. 블루프린트 비주얼 스크립트 덕에 Get Sequence Bindings 노드를 사용하여 레벨 시퀀스에서의 바인딩 식별자를 노출시키고 그 바인딩을 별도의 세팅으로 덮어쓸 수 있습니다.

이 예제에서는 길을 따라 움직이는 애니메이션 적용 기본 액터를, 플레이어가 버튼을 누르면 다른 이펙트로 바꿔보도록 하겠습니다.

EndResult.png

여기서는 블루프린트 삼인칭 템플릿 프로젝트에 시작용 콘텐츠 를 포함한 것을 사용하고 있습니다.

단계

  1. 모드 패널에서 기본 아래 기본 액터 를 끌어 레벨에 놓습니다.

    DynamicAnim_01.png

    시퀀서에서 이 기본 액터에 애니메이션을 적용하고, Sequence Bindings (시퀀스 바인딩)을 덮어써서 액터를 다른 파티클 이펙트로 덮어쓰도록 하겠습니다.

  2. 메인 툴바에서 시네마틱 버튼을 클릭한 뒤, Add Level Sequence (레벨 시퀀스 추가) 후 시퀀스에 이름을 짓습니다.

    DynamicAnim_02.png

  3. 레벨의 기본 액터를 선택한 뒤, 기본 액터를 시퀀서에 추가합니다.

    DynamicAnim_03.png

  4. 기본 액터에서 트랙 버튼을 클릭하고 Transform (트랜스폼)을 선택합니다.

    DynamicAnim_04.png

  5. 트랜스폼 트랙에 키프레임을 추가하여 기본 액터의 레벨 내 현재 위치에 초기값을 설정합니다.

    DynamicAnim_05.png

  6. 타임라인을 문질러 75 프레임으로 이동한 뒤, 기본 액터 위치를 레벨에서 위로 이동시킨 후 새 위치에 대한 키프레임을 추가합니다.

    DynamicAnim_06.png

  7. 시퀀서에서 첫 키프레임을 우클릭하고 복사한 뒤, 150 프레임으로 옮긴 뒤 우클릭하고 붙여넣기 하여 트랜스폼 키를 복사합니다.

    DynamicAnim_07.png

    첫 키를 복사하고 끝에 붙여넣으면 부드러운 시퀀스가 만들어져 루프로 만들 수 있습니다.

  8. 레벨 시퀀스의 디테일 패널에서 Auto Play (자동 재생) 옵션을 켜고 Loop (반복) 을 Loop Indefinitely (무한 반복)으로 설정합니다.

    DynamicAnim_08.png

  9. 메인 툴바에서, 블루프린트 - 레벨 블루프린트 열기 를 선택합니다.

    DynamicAnim_09.png

  10. 레벨 블루프린트 에서 우클릭하고 F 키보드 이벤트를 추가한 뒤 Flip Flop 노드에 연결합니다.

    DynamicAnim_10.png

  11. Spawn Actor from Class 노드를 둘 추가합니다 (하나는 Blueprint Effect Fire 를, 다른 하나는 Blueprint Effect Sparks 를 사용합니다). 그리고 그림처럼 Make Transform 노드에 연결합니다.

    DynamicAnim_11.png

  12. SpawnActor Blueprint Effect Fire 노드의 Return Value 에 우클릭하고 Promote to Variable (변수로 승격)시킨 뒤 Fire BP 라 합니다.

    DynamicAnim_12.png

  13. SpawnActor Blueprint Effect SparksReturn Value 를 변수로 승격시킨 뒤 Sparks BP 라 합니다.

  14. 레벨 시퀀스에 대한 레퍼런스를 추가하고, 거기서 Add Binding 노드를 사용합니다.

    DynamicAnim_13.png

  15. Add Binding 노드를 하나 더 추가하고 각각 그림처럼 연결합니다. Fire BPSparks BPActor 로 물려줍니다.

    DynamicAnim_14.png

  16. 우클릭하고 Get Sequence Binding 노드를 사용하여 (세팅은 아래 강조 부분처럼 하고) 양쪽 Add Binding 노드에 연결합니다.

    DynamicAnim_15.png

    Get Sequence Binding 노드에서, 타깃으로 삼고자 하는 레벨 시퀀스와 덮어쓰고자 하는 Binding 을 지정할 수 있습니다. 우리 예제에서는 레벨 시퀀스에 나열되어 덮어쓸 수 있는 트랙이 (기본 액터) 하나 뿐입니다. 레벨 시퀀스에 추가되어 덮어쓸 수 있는 오브젝트면 이 드롭다운 메뉴에 표시될 것입니다.

  17. Sparks BPFire BP 변수를 끌어놓고 IsValid 노드를 사용하여 오브젝트가 유효하다면 Destroy Actor (액터를 소멸)시킵니다.

    이미지를 클릭하면 원본을 확인합니다.

    스크립트가 완료되어, 화염 또는 스파크 이펙트를 스폰시키고, 레벨 시퀀스에서 기본 액터를 덮어쓴 뒤 다른 파티클 이펙트를 (유효한 경우) 소멸시킵니다.

  18. 에디터에서 플레이한 뒤, F 키를 눌러 스폰된 액터를 순환시켜 봅니다.

최종 결과

에디터에서 플레이하고 F 키를 누르면, 기본 액터가 스폰된 화염 또는 스파크 이펙트로 대체되고 기본 액터에 적용한 애니메이션도 계속해서 유지됩니다.

바인딩 추가뿐 아니라 다음과 같은 작업도 가능합니다:

  • Remove Binding 으로 지정된 액터에서 지정된 바인딩을 제거할 수 있습니다.

  • Reset Binding 으로 지정된 바인딩을 기본 세팅으로 되돌릴 수 있습니다.

  • Reset Bindings 로 덮어쓴 모든 바인딩을 기본 세팅으로 되돌릴 수 있습니다.

  • Set Binding 로 지정된 바인딩을 지정된 액터로 덮어쓸 수 있습니다.

AdditionalFunctions.png

태그
Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼