이 글에서는 Blueprint Casting, 블루프린트 형변환을 사용하여 다수의 블루프린트와 통신, 정보를 공유하는 법에 대해 다룹니다. 이 예제에서는 플레이어가 오브젝트에 총을 쏴서 맞을 때마다 작게 만들도록 하겠습니다. 오브젝트가 맞을 때마다 캐릭터 블루프린트에 노티파이를 발송, 플레이어의 이동 속도를 올립니다.
여기서는 시작용 콘텐츠 포함 된 블루프린트 일인칭 템플릿을 사용하고 있습니다.
뷰포트 안에서 EditorCube 메시 중 하나를 선택한 다음, 디테일 패널에서 블루프린트/스크립트 추가 버튼을 클릭합니다.
확인창이 뜨면 이름을 LargeCube_Blueprint 로 바꾼 다음 OK 를 눌러 변경된 이름으로 블루프린트를 생성합니다.
콘텐츠 브라우저 에서 Content/FirstPersonBP/Blueprints 아래 FirstPersonProjectile 블루프린트를 엽니다.
게임플레이중 플레이어가 무기를 발사하면 나가는 발사체에 대한 블루프린트입니다.
Event Hit 노드를 찾은 다음 Other 핀을 끌어놓고 Cast To LargeCube_Blueprint (LargeCube_Blueprint 에 형변환) 노드를 검색 추가합니다.
Event Hit 노드에서 Other 핀은 걸린 다른 액터를 가리킵니다. Cast To (형변환) 노드를 사용하여 걸린 다른 액터가 정말 LargeCube_Blueprint 인지 확인합니다. 그렇다면 접근하여 그 블루프린트 안의 이벤트나 함수 실행, 변수 값 및 컴포넌트의 프로퍼티 변경이 가능합니다.
As Large Cube Blueprint 핀에서 Get Static Mesh Component 를 사용한 뒤 Set World Scale 3D 을 다음과 같이 연결합니다.
Add Impulse at Location 이후 Large Cube 블루프린트로 형변환하여 그 안의 스태틱 메시 컴포넌트(실제 큐브)를 구한 다음 거기에 새로운 월드 스케일 3D 값을 설정합니다. 현재 New Scale 은 0 으로 설정되어 있으나, 걸릴 때마다 Large Cube 블루프린트의 크기를 줄일 것입니다.
스태틱 메시 컴포넌트 에서 Get World Scale 을 사용하여 (0.5 로 설정된) Vector * Float 핀에 연결한 뒤 New Scale 에 꽂습니다.
걸릴 때마다 큐브의 현재 월드 스케일을 구한 뒤 .5 를 곱해(즉 절반으로 줄여)서 크기를 줄입니다.
그래프에 우클릭 한 뒤 Get Player Character 노드를 추가하고, Return Value 에서 Cast To FirstPersonCharacter (FirstPersonCharacter 에 형변환) 합니다.
플레이어 캐릭터가 FirstPersonCharacter 블루프린트를 사용중인지 검사하는데, 이 템플릿에서는 기본적으로 그렇습니다. 그렇게 하면 이제 플레이어 캐릭터의 이벤트, 함수, 변수, 프로퍼티에 접근하여 변경할 수 있습니다.
Set World 3D 노드를 Cast To FirstPersonCharacter 노드에 연결합니다.
As First Person Character 핀에서 Get Character Movement 노드를 추가합니다.
캐릭터가 Large Cube 에 걸릴 때마다 속력을 조절하여 더욱 빨리 달리도록 하겠습니다.
Character Movement 노드에서 Set Max Walk Speed 와 Get Max Walk Speed 노드를 추가합니다.
Get Max Walk Speed 에서 (200 으로 설정된) Float + Float 노드를 사용하여 Set Max Walk Speed 핀에 연결합니다.
위와 같이 노드를 연결하면 플레이어 캐릭터가 큐브에 걸릴 때마다 이동 속도가 빨라집니다.
두 Cast To (형변환) 노드 모두 Cast Failed 핀을 Destroy Actor 노드에 연결합니다.
플레이어가 Large Cube 가 아닌 것에 걸리는 경우에도, 여전히 Destroy Actor 노드를 호출하여 발사체를 소멸시킵니다. Large Cube 에 맞았을 때, 큐브에 맞은 것이 First Person Character 가 아닌 경우에도, 발사체를 소멸시키고 싶습니다.
발사체 블루프린트의 종료 시퀀스는 아래와 같을 것입니다.
이미지를 클릭하면 원래 크기로 봅니다.
Reroute (경유) 노드를 사용하여 선 흐름을 깔끔하게 만들었으며, 이와 비슷하게 연결하면 됩니다.
컴파일, 저장 후 플레이 버튼을 눌러 에디터에서 플레이합니다.
Large Cube 블루프린트를 쏠 때마다 크기가 줄어들며, 캐릭터 이동속도가 빨라집니다.
Casting (형변환) 사용법 및 예제 관련 상세 정보는 아래 관련 토픽 부분을 참고하시기 바랍니다.