블루프린트로 액터 스폰 및 소멸

여기서는 블루프린트를 사용하여 버튼을 한 번 누르면 오브젝트를 스폰, 두 번 누르면 소멸시키도록 하겠습니다.

Windows
MacOS
Linux

제작중인 게임 유형과 관계 없시 종종 원래 레벨에 배치하지는 않았지만 실행시간에 무언가 나타나게 하고 싶은 경우가 있습니다. 월드에 오브젝트를 "스폰"(spawn)시킨다는 개념은 물론 게임플레이 도중(이든 아니든) 스폰된 오브젝트를 "소멸"(destroy)시킨다는 개념 역시 블루프린트 비주얼 스크립트 로 가능합니다.

여기서는 버튼을 누르면 액터 를 스폰시키고, 캐릭터에 붙인 다음, 버튼을 두 번째 누르면 변수 레퍼런스를 사용하여 소멸시킵니다.

HeroImage.png

단계

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

  1. 프로젝트 안의 메인 툴바 에서 블루프린트 버튼을 클릭하고 레벨 블루프린트 열기 를 선택합니다.

    SpawnDestroy_01.png

    레벨 블루프린트 는 각 레벨에 고유한 특수 블루프린트 유형으로, 레벨 전반적인 글로벌 그래프 역할을 합니다.

  2. 그래프에 우클릭하고 Spawn Actor from Class 노드를 검색 추가합니다.

    SpawnDestroy_02.png

    그러면 스폰시키고자 하는 클래스( 또는 오브젝트 유형 따위)를 지정할 수 있습니다.

  3. SpawnActor 노드의 Class 섹션에서 Blueprint_Effect_Fire 클래스를 선택합니다.

    SpawnDestroy_03.png

    프로젝트를 생성할 때 포함시킨 시작용 콘텐츠 의 일부분으로 생성된 블루프린트 클래스입니다.

  4. 그래프에 우클릭하고 F Keyboard Event 를 검색 추가합니다.

    SpawnDestroy_04.png

    화염 이펙트의 스폰과 소멸에 이 키를 사용합니다.

  5. 그래프에 다시 우클릭하고 Flip Flop 노드를 검색 추가합니다.

    SpawnDestroy_05.png

    이 노드는 처음 들어설 때 A 핀을 실행하고 두 번째 들어설 때 B 핀을 실행하는 스위치 역할을 합니다. B 핀을 실행한 이후, 다음 번 들어설 때 다시 A 핀을 실행하는 식으로, "flip-flop" 은 A 와 B 핀을 번갈아 선택합니다.

  6. F 노드의 Pressed 핀을 좌클릭으로 끌어 Flip FlopSpawn Actor 노드에 연결합니다.

    SpawnDestroy_06.png

    이렇게 하면 (F 를 눌렀을 때) Blueprint Fire 이펙트를 스폰시키는 Spawn Actor 노드 호출을 실행할 수 있습니다.

  7. 그래프에 우클릭하고 Destroy Actor 노드를 검색 추가합니다.

    SpawnDestroy_07.png

    이 노드로 소멸시킬 액터를 지정할 수 있습니다.

  8. Flip Flop 노드의 B 핀을 Destroy Actor 노드에 연결합니다.

    SpawnDestroy_08.png

    F 를 두 번째 누르면, Flip FlopB 핀이 호출되어 Destroy Actor 노드를 실행합니다. Destroy Actor 에는 Target 입력 핀이 있어, 노드에게 무엇을 소멸시킬지 알려줍니다. 기본적으로 Self 설정되어 있으며 이 경우 널 포인터, 즉 레벨 블루프린트 자체는 소멸시킬 수 없으니 무엇을 소멸시킬지 명확하지 않다는 뜻입니다. 이 Destroy Actor 노드가 캐릭터 블루프린트 안에 있고 타깃을 Self 로 한다면, 캐릭터가 소멸될 것입니다.

    이 경우 Destroy Actor 노드에게 무엇을 소멸시킬지 알려줘야 합니다 (우리 Blueprint Fire 이펙트입니다). 그러기 위해 스폰했던 Blueprint Fire 이펙트로의 레퍼런스를 만들어야 합니다.

  9. Spawn Actor 노드의 Return Value 에 우클릭하고 변수로 승격 을 선택합니다.

    SpawnDestroy_09.png

    Return Value 가 여기서 바로 "스폰하고자 하는 것" 이며 이에 대한 레퍼런스를 저장하여 나중에 소멸시키고자 하는 것입니다.

  10. 변수의 디테일 패널에서 이름을 CurrentFlames 처럼 짓습니다.

    SpawnDestroy_10.png

  11. 내 블루프린트 패널에서 변수 아래 Ctrl 키를 누른 상태로 CurrentFlames 변수를 그래프에 끌어 놓고 Destroy ActorTarget 에 연결합니다.

    SpawnDestroy_11.png

    이제 Destroy Actor 노드더러 우리 변수 레퍼런스가 앞서 만든 Blueprint Fire 이펙트를 타깃으로 삼으라 하는 것입니다.

  12. 그래프에 우클릭하고 Get Player Character 노드를 검색 추가합니다.

    SpawnDestroy_12.png

    이렇게 하면 지정된 플레이어 캐릭터 위치를 찾아 그에 관한 정보에 접근하여 얻을 수 있게 됩니다.

  13. Get Player CharacterReturn Value 를 끌어 놓고 Get Actor Transform 노드를 검색 추가합니다.

    SpawnDestroy_13.png

    그러면 플레이어 캐릭터의 위치, 회전, 스케일 정보를 알 수 있고, 이를 사용하여 Blueprint Fire 이펙트의 스폰 위치를 정할 수 있습니다.

  14. Get Actor TransformReturn ValueSpawn ActorSpawn Transform 에 연결합니다.

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

    이 시점에서 그래프가 거의 완성되어 F 키를 누르면 플레이어 위치를 변수에 저장하고 거기에 Blueprint Fire 를 스폰하도록 지정했습니다. F 를 두 번째 누르면, 생성했던 변수(, 즉 화염 이펙트)를 소멸시킵니다. 마지막으로 할 작업은 화염 이펙트를 플레이어에 붙이는 것입니다. 현재 화염 이펙트는 플레이어 위치에 스폰되지만, 플레이어가 이동해도 화염은 스폰된 자리에 머무릅니다.

  15. Set 노드의 레퍼런스 핀을 좌클릭으로 끌어 놓고 AttachToActor 노드를 추가합니다.

    SpawnDestroy_15.png

    이 노드를 통해 화염 이펙트를 다른 액터, 이 경우 플레이어 캐릭터에 붙일 수 있습니다.

  16. Get Player Character 노드를 사용하여 아래와 같이 붙이고, Location RuleRotation RuleSnape to Target 으로 설정합니다.

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

    여기서 화염 이펙트에 대한 레퍼런스 변수를 플레이어 캐릭터에 붙이는데, 그 위치와 회전은 플레이어 캐릭터에 끌어 붙이도록 하고 있습니다.

  17. 컴파일 버튼을 눌러 블루프린트를 컴파일합니다.

    SpawnDestroy_17.png

  18. 메인 레벨 에디터 창으로 돌아와 메인 툴바 에서 플레이 버튼을 클릭하여 에디터 안에서 플레이합니다.

    SpawnDestroy_18.png

최종 결과

에디터에서 플레이할 때, F 키를 누르면 화염 이펙트가 스폰되어 플레이어 캐릭터에 붙습니다. 화염이 플레이어에 붙어있는 동안 F 키를 누르면 이펙트가 소멸되고, F 키를 다시 누르면 다시 스폰됩니다.

다른 접근법 한 가지는 Blueprint Fire 이펙트 안에 들어있는 파티클 이펙트를 Activate / Deactivate 시키는 것입니다.

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

위 예제에서, Event BeginPlay 노드를 사용하여 게임 시작 시 Blueprint Fire 를 스폰하고 플레이어 캐릭터에 붙입니다. 또 게임 시작 시 파티클 이펙트 비활성화 및 그에 연관된 사운드를 페이드 아웃 시킵니다. F 를 누르면, Blueprint Fire 이펙트가 이미 (활성화만 안되었다 뿐) 스폰되어 있기 때문에, 그냥 활성화만 시켜주고 오디오 페이드 인을 해주면 됩니다. F 를 두 번째 누르면, 이펙트를 소멸시키는 대신 비활성화 및 사운드 페이드 아웃을 해줍니다.

Select Skin
Light
Dark

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

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

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

네이버 카페
공식 포럼