언어:
페이지 정보
태그:
수준별:
엔진 버전:
언리얼 엔진

3 - 블루프린트 세트 교집합 연산

언리얼 엔진

이제 이전 단계에서 정의한 블루프린트 세트의 내용을 표시하는 TextRender 액터가 있을 것입니다. 여기서는 두 블루프린트 세트의 Intersection (교집합) 연산을 한 뒤 그 결과를 게임 뷰포트 에 출력하는 법을 알아보겠습니다.

  1. 프로젝트의 콘텐츠 브라우저 에서 Display Set TextRender Actor 를 더블클릭하여 블루프린트 이벤트 그래프 를 엽니다.

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

  2. Display Set TextRender 액터 블루프린트 이벤트 그래프 가 보일 것입니다. 여기서 새 블루프린트 세트를 추가하여 기존 Instruction SetIntersect (교집합) 연산을 하고, 그 결과 세트를 뷰포트 에 표시하도록 하겠습니다.

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

  3. 이 시점에서 교집합 연산을 위한 블루프린트 세트 컨테이너가 두 개 있어야 할 것입니다. Instruction Set 변수에 우클릭하고 드롭다운 리스트에서 복제 를 선택하여 블루프린트 세트 변수를 두 개 새로 만듭니다. 이름은 Shorter Instruction SetResultant Instruction Set 라 짓습니다.

    Step3_3.png

    (보통) 두 세트에 교집합 연산을 하면 Resultant Set 가 나오는데, 두 세트 모두에 공통인 아이템만 들어있게 됩니다.

  4. 이제 기존 Instruction Set 에서 복제한 새로운 블루프린트 세트 변수가 두 개 생겼을 것입니다. 새 블루프린트 세트 중 하나(, 예로 Resultant Instruction Set) 를 선택하면 Default Value 메시지가 보일 것입니다.

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

  5. 컴파일 버튼을 클릭합니다.

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

  6. 블루프린트를 컴파일한 후, Default Value 메시지가 사라져 기존 엘리먼트에 공간을 내주는 것이 보일 것입니다. 아시다시피 기존 Instruction Set 변수를 복제하여 변수를 둘 새로 만들었으므로, 원본 블루프린트 세트에 들어있는 엘리먼트가 새로 생성된 컨테이너에 복제된 것입니다.

    Step3_6.png

    참고로 기존 변수를 복제하지 않고도 새 변수를 만들 수 있습니다.

  7. Resultant Instruction Set 를 비우기 위해 Default Value 메뉴에 위치한 Removes all items (모든 아이템 제거) 버튼을 클릭합니다.

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

  8. Shorter Instruction Set 에서도 모든 아이템( 또는 엘리먼트들)을 비웁니다.

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

  9. 기존 블루프린트 이벤트 그래프에 새로운 로직을 추가하기에 앞서, Shorter Instruction SetInstruction Set 변수를 끌어 블루프린트에 놓습니다.

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

로직 스크립트 작성

  1. 새로운 로직 작성을 시작하기 위해, Shorter Instruction Set 노드를 끌어 놓고 Set Utilities 인터페이스에서 Intersection 노드를 추가합니다.

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

  2. Instruction Set 노드를 Intersection 노드에 연결합니다.

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

  3. 블루프린트 그래프에 우클릭하여 컨텍스트 메뉴 를 열고, Event ActorBeginOverlap 을 검색 추가합니다.

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

  4. Event ActorBeginOverlap 노드의 Other Actor 핀을 끌어 놓고 Cast To FirstPersonProjectile 노드를 검색 추가합니다.

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

  5. Cast To FirstPersonProjectile 노드를 Intersection 노드에 연결합니다.

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

    기본적으로 First Person Projectile 가 이 액터의 콜리전 박스에 성공적으로 충돌하면, Intersection 노드를 호출하라는 뜻입니다.

  6. Intersection 노드가 Shorter Instruction SetInstruction Set 에 대한 연산을 수행한 이후, 그 결과를 Resultant Instruction Set 컨테이너에 저장하려 합니다. 그러기 위해 Intersection 노드를 끌어 놓고 Set Resultant Instruction Set 를 추가합니다.

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

  7. Set Resultant Instruction Set 노드를 끌어 놓고 Set Utilities 인터페이스에서 To Array 노드를 추가합니다.

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

  8. 배열의 엘리먼트를 대상으로 반복처리하기 위해, To Array 노드를 끌어 놓고 ForEachLoop 노드를 추가합니다.

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

  9. To Array Node 노드를 ForEachLoop 노드와 연결합니다.

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

  10. 이제 교집합 결과를 뷰포트 에 출력할 준비가 되었습니다. ForEachLoop 노드의 Array Element 핀을 끌어 놓고, Print String 노드를 검색 추가합니다.

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

  11. ForEachLoop 노드를 Print String 노드에 연결합니다.

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

  12. 이제 Resultant Instruction Set 에 무엇을 저장할지 결정할 준비가 되었습니다. 예를 들어 Resultant Instruction Set 변수에 Click, Left, Mouse, Button 만 들어가기를 원한다 칩시다. 교집합 연산을 종이에 먼저 써 보면 이렇습니다:

    Instruction Set

    Shorter Instruction Set

    Resultant Instruction Set (A ∩ B)

    Click

    Click

    Click

    the

    Left

    Left

    Left

    Mouse

    Mouse

    Mouse

    Button

    Button

    Button

    and

    Fire

    방금 종이에 쓴 내용에서 알 수 있듯이, Instruction SetShorter Instruction Set 양쪽에 공통인 아이템이 Resultant Set 컨테이너에 저장됩니다. 세트에 논리 연산을 수행할 때마다, 종이(나 화이트보드)에 연산을 먼저 해 보고 블루프린트 그래프에 로직 스크립트를 작성하는 습관을 들이는 것이 좋습니다.

  13. Shorter Instruction Set 컨테이너에 저장하려는 아이템이 무엇인지 알았으니, Shorter Instruction Set 를 선택하여 컨테이너의 내용을 조사합니다.

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

    강조된 이미지에서 보시듯이, Shorter Instruction Set 는 현재 비어 있습니다. 이 시점에서, Shorter Instruction SetInstruction SetIntersection 연산을 한다면, Resultant Instruction Set 컨테이너에는 아무것도 없을 것입니다.

  14. Shorter Instruction Set 컨테이너를 다음 엘리먼트로 채웁니다:

    Step3_22.png

  15. 완성된 스크립트를 살펴본 후 컴파일 버튼을 클릭합니다.

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

  16. 마지막으로 저장 버튼을 누르고 에디터의 뷰포트 인터페이스로 돌아갑니다.

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

  17. 에디터의 뷰포트 인터페이스에서 플레이 버튼을 클릭하여 업데이트된 스크립트가 작동하는 모습을 확인합니다.

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

최종 결과

비디오에서 보시듯이 First Person Projectile 이 Display Set 콜리전 박스와 충돌하면, Resultant Instruction Set 내용이 뷰포트 에 출력됩니다. 출력된 아이템을 살펴보면, Resultant Instruction Set 에 들어있는 아이템의 순서를 예측할 수가 없는 것을 알 수 있는데, 블루프린트 세트의 특성입니다. Union (합집합) 연산 방법은 다음 단계를 확인해 보세요.

태그