본문 바로가기

블루프린팅/2. 블루프린트 프로그래밍

액터 레퍼런스 Set / Get

액터로의 레퍼런스를 Get / Set 하는 예제는 아래 단계를 참고하세요.

이 예제에서는 시작용 콘텐츠가 포함 된 블루프린트 삼인칭 템플릿 을 사용하고 있습니다._

 
  1. 기본 탭 아래 액터 배치(Place Actors) 에서 박스 트리거 를 끌어 레벨에 놓습니다.이 트리거를 건드리면 레벨에 있는 다른 액터가 이동되도록 하겠습니다.

  1. Place Actors를 못찾아 툴바의 + Quick add the project 단추를 눌러 삽입했다

  1. 박스 트리거  디테일 패널에서 Convert to Class Blueprint (클래스 블루프린트로 변환)을 선택합니다.이 액터에서 블루프린트 를 만들어 그 안에 액터 레퍼런스를 저장할 변수를 할당해 주도록 하겠습니다.
  2. 블루프린트 이름을 지은 다 블루프린트 생성 을 선택합니다. 블루프린트 에디터 가 열립니다.
  3. 블루프린트 에디터에서 내 블루프린트 아래, 변수 추가 버튼을 누릅니다.
  4. 변수를 클릭한 다음 디테일 패널에서 변수 유형 버튼을 누르고 오브젝트 레퍼런스 아래 Actor 를 선택합니다.여기서 레퍼런스가 Actor 유형이며, 레벨에 있는 오브젝트 임을 나타냅니다.
  5. 변수 이름을 TargetActor 라고 지은 뒤 Editable (편집가능) 체크박스를 클릭합니다.변수가 퍼블릭 으로 설정되어, 이 블루프린트 이외에도 메인 에디터 창에서 디테일 패널을 통해 접근 및 설정 가능함을 나타냅니다. 변수를 블루프린트 안에 들어가지 않고도 변경하고자 할 때 유용합니다.
  6. 툴팁 칸에 변수의 역할이나 용도에 대해 입력해도 좋습니다.여기서는 "The Actor to Target" 이라 입력했습니다.
  7. 블루프린트 에디터 창 좌상단의 컴파일 버튼을 클릭합니다.컴파일이 완료되면 초록 체크 표시로 변합니다.
  8. 블루프린트를 최소화시키고 메인 에디터 창으로 돌아와서 레벨의 박스 트리거 블루프린트를 선택합니다.
  9. 창의 디테일 패널에서, Default 아래 Target Actor 변수와 툴팁이 보일 것입니다.
  10. 콘텐츠 브라우저 에서 Content/StarterContent/Shapes 아래 Shape_Cubes 를 레벨에 세 개 추가합니다.

    별도의 프로젝트를 사용중이시라면, 아무 액터, 스태틱 메시 또는 블루프린트를 레벨에 놓아도 됩니다.

  11. 레벨에 무엇을 추가하든, 각 액터의 디테일 패널에서 모빌리티를 무버블 로 설정합니다.그러면 블루프린트 스크립트를 통해 이동시킬 수 있게 됩니다.
  12. 레벨의 박스 트리거 블루프린트를 클릭합니다.
  13. 디테일 패널에서 Target Actor 아래 없음 박스를 클릭한 다음 Shape (또는 추가한 액터 이름)을 선택합니다.없음 을 클릭하면 현재 레벨에 있는 모든 액터가 표시되나, 방금 추가한 큐브 액터 하나를 대상으로 삼겠습니다.
  14. 확대경 아이콘 옆의 스포이드 아이콘을 클릭합니다.그러면 뷰포트에서 레벨에 있는 액터를 클릭하는 것으로 타깃 액터로 선택할 수 있습니다.
  15. 스포이드 아이콘을 큐브 (또는 추가한 애셋)으로 옮긴 다음 클릭하여 타깃 액터로 만듭니다.
  16. 액터를 선택하면 디테일 패널에 Target Actor 변수가 선택된 액터로 업데이트됩니다.여기 우리 타깃 액터가 될 액터로의 레퍼런스를 Set 했습니다.
  17. Box Trigger 블루프린트를 연 다음 내 블루프린트 창에서 눈 모양 아이콘을 클릭하고 Show Inherited Variables (상속된 변수 표시) 옵션을 켭니다.그러면 트리거 박스를 클래스 블루프린트로 처음 전환했을 때 상속된 컴포넌트에 이벤트를 추가할 수 있습니다.
  18. Trigger Base 아래 CollisionComponent  우클릭 한 다음 Event 추가  OnComponentBeginOverlap 추가 합니다.그러면 그래프에 이벤트 노드가 생성됩니다.
  19. Ctrl 키를 누른 채 TargetActor 를 그래프에 끌어 놓습니다.그러면 레벨의 액터로 설정해 둔 변수가 무엇이든지 구해오는 Get 노드가 생성됩니다.
  20. TargetActor 노드를 끌어놓은 다음, Add Actor Local Offset 노드를 검색하여 추가합니다.그러면 현재 타깃의 트랜스폼 추가(를 통해 현재 위치에서 이동)시키는 것이 가능합니다.
  21. 노드를 아래와 같이 연결하고, Add Actor Local Offset 노드의 Z 값을 500.0 으로 설정합니다.그러면 트리거 박스에 겹칠때마다 타깃의 현재 위치를 구한 다음 Z 축을 따라 500 만큼 위로 이동시킵니다.
  22. 컴포넌트 창에서 TriggerBox_Blueprint 를 클릭하여 선택합니다.컴포넌트 창이 보이지 않으면,  메뉴 옵션에서 켤 수 있습니다.
  23. 트리거 박스에 대한 디테일 패널 에서 Rendering 아래 Actor Hidden In Game (게임내 숨겨진 액터) 옵션을 켭니다.그러면 플레이어가 어디로 들어가면 될지 확인이 가능하도록 트리거 박스가 게임내에서 보이게 됩니다.
  24. 컴파일, 저장 을 클릭한 다음 블루프린트를 닫습니다.
  25. 메인 에디터 창에서 플레이 아이콘을 클릭하여 에디터에서 플레이합니다.

트리거 박스에 들어서면, 선택된 액터가 500 유닛 위로 이동됩니다. 트리거 박스에 들어설 때마다 박스가 500 유닛씩 계속 올라갑니다. 레퍼런스 구축을 통해서 트리거 박스 스크립트에서 어떤 액터에 영향을 끼칠지 변수가 아는 것입니다. 이 스크립트를 사용해서 다른 액터에 영향을 끼쳐 보세요.

  1. 메인 에디터 창에서, 레벨 뷰포트 안의 박스 트리거 블루프린트를 클릭합니다.
  2. 박스 트리거  디테일 패널에서, Target Actor 옆의 스포이드 아이콘을 클릭합니다.
  3. 레벨 뷰포트에서 전에 사용했던 것과 다른 액터를 선택합니다.
  4. 다시 에디터에서 플레이합니다.

이번에는 트리거 박스에 들어설 때마다 새로 선택한 액터가 Z 축으로 500 유닛만큼 올라갑니다. 박스 트리거 스크립트의 Target Actor 변수를 사용함으로써, 스크립트에 특정 액터 한정이 아닌, 블루프린트 자체를 변경하지 않고도 영향을 끼칠 액터를 변경할 수 있는 것입니다.

여러 오브젝트를 움직이는 법을 보여주는 예제긴 하지만, 이 방법을 통해 오브젝트 이동 대신 플레이어가 버튼을 누르면 문을 연다든가, 불을 켜고 끈다든가, 플레이어가 집거나 부술 수 있는 아이템이 스폰된다든가, 여러가지 있을 수 있습니다.

액터에 대한 레퍼런스를 구할 수 있는 여러가지 방법 중 하나가 되기도 하는데, 예를 들어 메인 에디터 창에서는 명시적으로 설정할 수 없는 플레이어 캐릭터에 대한 레퍼런스를 구하고자 하는 경우, 다른 접근법을 취해야 할 것입니다 (아래 관련 링크 섹션 참고).

'블루프린팅 > 2. 블루프린트 프로그래밍' 카테고리의 다른 글

[블루프린트] 키보드입력  (0) 2023.05.07
함수 만들기  (1) 2023.05.05
[블루프린트] 매크로 만들기  (3) 2023.05.05
블루프린트 변수  (1) 2023.05.05
블루프린트 스크립트언어  (0) 2023.05.04