블루프린트 형변환 예제

Blueprint Casting, 블루프린트 형변환을 사용하여 하나의 블루프린트에서 다수의 블루프린트로 통신하는 법입니다.

Windows
MacOS
Linux

이 글에서는 Blueprint Casting, 블루프린트 형변환을 사용하여 다수의 블루프린트와 통신, 정보를 공유하는 법에 대해 다룹니다. 이 예제에서는 플레이어가 오브젝트에 총을 쏴서 맞을 때마다 작게 만들도록 하겠습니다. 오브젝트가 맞을 때마다 캐릭터 블루프린트에 노티파이를 발송, 플레이어의 이동 속도를 올립니다.

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

  1. 뷰포트 안에서 EditorCube 메시 중 하나를 선택한 다음, 디테일 패널에서 블루프린트/스크립트 추가 버튼을 클릭합니다.

    Casting1.png

  2. 확인창이 뜨면 이름을 LargeCube_Blueprint 로 바꾼 다음 OK 를 눌러 변경된 이름으로 블루프린트를 생성합니다.

  3. 콘텐츠 브라우저 에서 Content/FirstPersonBP/Blueprints 아래 FirstPersonProjectile 블루프린트를 엽니다.

    Casting2.png

    게임플레이중 플레이어가 무기를 발사하면 나가는 발사체에 대한 블루프린트입니다.

  4. Event Hit 노드를 찾은 다음 Other 핀을 끌어놓고 Cast To LargeCube_Blueprint (LargeCube_Blueprint 에 형변환) 노드를 검색 추가합니다.

    Casting3.png

    Event Hit 노드에서 Other 핀은 걸린 다른 액터를 가리킵니다. Cast To (형변환) 노드를 사용하여 걸린 다른 액터가 정말 LargeCube_Blueprint 인지 확인합니다. 그렇다면 접근하여 그 블루프린트 안의 이벤트나 함수 실행, 변수 값 및 컴포넌트의 프로퍼티 변경이 가능합니다.

  5. As Large Cube Blueprint 핀에서 Get Static Mesh Component 를 사용한 뒤 Set World Scale 3D 을 다음과 같이 연결합니다.

    Casting4.png

    Add Impulse at Location 이후 Large Cube 블루프린트로 형변환하여 그 안의 스태틱 메시 컴포넌트(실제 큐브)를 구한 다음 거기에 새로운 월드 스케일 3D 값을 설정합니다. 현재 New Scale 은 0 으로 설정되어 있으나, 걸릴 때마다 Large Cube 블루프린트의 크기를 줄일 것입니다.

  6. 스태틱 메시 컴포넌트 에서 Get World Scale 을 사용하여 (0.5 로 설정된) Vector * Float 핀에 연결한 뒤 New Scale 에 꽂습니다.

    Casting5.png

    걸릴 때마다 큐브의 현재 월드 스케일을 구한 뒤 .5 를 곱해(즉 절반으로 줄여)서 크기를 줄입니다.

  7. 그래프에 우클릭 한 뒤 Get Player Character 노드를 추가하고, Return Value 에서 Cast To FirstPersonCharacter (FirstPersonCharacter 에 형변환) 합니다.

    Casting6.png

    플레이어 캐릭터가 FirstPersonCharacter 블루프린트를 사용중인지 검사하는데, 이 템플릿에서는 기본적으로 그렇습니다. 그렇게 하면 이제 플레이어 캐릭터의 이벤트, 함수, 변수, 프로퍼티에 접근하여 변경할 수 있습니다.

  8. Set World 3D 노드를 Cast To FirstPersonCharacter 노드에 연결합니다.

  9. As First Person Character 핀에서 Get Character Movement 노드를 추가합니다.

    Casting7.png

    캐릭터가 Large Cube 에 걸릴 때마다 속력을 조절하여 더욱 빨리 달리도록 하겠습니다.

  10. Character Movement 노드에서 Set Max Walk SpeedGet Max Walk Speed 노드를 추가합니다.

  11. Get Max Walk Speed 에서 (200 으로 설정된) Float + Float 노드를 사용하여 Set Max Walk Speed 핀에 연결합니다.

    Casting8.png

    위와 같이 노드를 연결하면 플레이어 캐릭터가 큐브에 걸릴 때마다 이동 속도가 빨라집니다.

  12. Cast To (형변환) 노드 모두 Cast Failed 핀을 Destroy Actor 노드에 연결합니다.

    Casting9.png

    플레이어가 Large Cube 가 아닌 것에 걸리는 경우에도, 여전히 Destroy Actor 노드를 호출하여 발사체를 소멸시킵니다. Large Cube 에 맞았을 때, 큐브에 맞은 것이 First Person Character 가 아닌 경우에도, 발사체를 소멸시키고 싶습니다.

  13. 발사체 블루프린트의 종료 시퀀스는 아래와 같을 것입니다.

    이미지를 클릭하면 원래 크기로 봅니다.

    Reroute (경유) 노드를 사용하여 선 흐름을 깔끔하게 만들었으며, 이와 비슷하게 연결하면 됩니다.

  14. 컴파일, 저장플레이 버튼을 눌러 에디터에서 플레이합니다.

    Large Cube 블루프린트를 쏠 때마다 크기가 줄어들며, 캐릭터 이동속도가 빨라집니다.

    Casting (형변환) 사용법 및 예제 관련 상세 정보는 아래 관련 토픽 부분을 참고하시기 바랍니다.

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

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

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

네이버 카페
공식 포럼