비히클 사용 안내서

언리얼 엔진 4 블루프린트 비히클 사용 안내서입니다.

Windows
MacOS
Linux

이 글을 마칠 즈음이면 다른 게임 프로젝트에서도 사용할 수 있을 만큼 완벽히 동작하는 비히클이 완성되어 있을 것입니다!

목적

여기서는 새로운 기본 프로젝트에서 Wheeled Vehicle 블루프린트 클래스를 사용하여 비히클을 만드는 법을 다루겠습니다. 정상 작동하는 비히클을 만드는 데 필요한 모든 에디터내 아이템 제작 프로세스를 안내해 드리겠지만, 별도의 스켈레탈 메시피직스 애셋 이 준비되어 있다 가정합니다. 이 글을 마칠 즈음이면 비히클 게임 또는 비히클 템플릿에 있는 것과 비슷한 정상 작동 비히클이 완성되어 있을 것입니다.

비히클 스켈레탈 메시피직스 애셋 을 엔진에 임포트하는 법에 대한 정보가 필요하다면, 비히클 아트 셋업 문서를 참고하세요. 또는 비히클 템플릿 이나 비히클 게임 프로젝트를 통해 미리 만들어진 스켈레탈 메시피직스 애셋 에서 작업할 수도 있습니다. 비히클 템플릿언리얼 프로젝트 브라우저새 프로젝트 메뉴에 있으며, 비히클 게임에픽 게임스 런처학습 탭에 있습니다.

목표

이 튜토리얼 전반에 걸쳐 언리얼 엔진 4 (UE4) 의 비히클을 이루는 핵심 컴포넌트를 생성하게 됩니다. 이 중 일부는 UE4 외부에서 애셋을 만들어야 하는 반면 컴포넌트 대부분은 에디터 안에서 바로 만들 수 있습니다!

우리가 만들 비히클을 이루는 애셋을 개별 단위로 나누어 보면 이렇습니다:

  • 스켈레탈 메시 하나.

  • 피직스 애셋 하나.

  • 애니메이션 블루프린트 하나.

  • Vehicle (비히클) 블루프린트 하나.

  • Wheel (휠) 블루프린트 하나 이상.

  • TireConfig 데이터 애셋 하나.

overview.png

이 글을 마칠 즈음이면 이들 애셋 유형 각각을 구성하는 방법과, 비히클에 생동감을 불어넣기 위한 조합 방법을 확인할 수 있을 것입니다!

  • TireConfig 데이터 애셋 환경설정 방법

  • 앞/뒤 휠에 대한 휠 블루프린트 환경설정 방법

  • 비히클 전용 애니메이션 블루프린트 구성 방법

  • 스켈레탈 메시, 애니메이션 블루프린트, 휠 블루프린트로 비히클 블루프린트 환경설정 방법

  • 축 매핑 및 바인딩으로 비히클 제어 방법

  • 비히클 스폰을 위한 새 게임 모드 생성 및 할당 방법

1 - 필수 프로젝트 셋업

  1. 런처에서 언리얼 엔진 을 엽니다. 프로젝트 브라우저 가 나타납니다.

  2. 새 프로젝트 탭의 C++ 탭을 클릭합니다. 거기서 Basic Code (기본 코드)를 선택하여 깨끗한 상태에서 시작하고, 시작용 콘텐츠 포함 으로 설정합니다. 프로젝트 이름을 입력해야 하므로, QuickStart 라 하겠습니다. 이제 프로젝트 생성 을 클릭하여 시작하면 됩니다.

    CreateProject.png

    이제 언리얼 에디터 에 새 프로젝트가 열립니다. Visual Studio 역시 열려 프로젝트를 생성한 솔루션 파일이 로드됩니다.

    BlankProject.png

2 - TireConfig 데이터 애셋 및 휠 블루프린트 생성

이번 비히클 제작 첫 단계에서는, 두 부분을 조립하여 비히클의 휠을 만듭니다. 바로 TireConfig 데이터 애셋과 휠 블루프린트 클래스입니다. 먼저 TireConfig 데이터 애셋을 만든 뒤 휠의 프로퍼티가 들어있는 휠 블루프린트를 만들겠습니다. 이 블루프린트에는 TireConfig 데이터가 할당됩니다.

TireConfig 데이터를 만들고 휠 블루프린트에 사용하는 방법은 다음과 같습니다.

Tire Config 데이터 애셋

TireConfig Data AssetFriction Scale (마찰 스케일) 제어에 사용됩니다. 이 값은 휠의 순수 마찰에 영향을 줄 뿐 아니라 하드 턴 도중 휠이 얼마나 잘 (또는 안) 미끄러지도록 하는 값의 스케일을 조절하기도 합니다. Tire Friction Scales (타이어 마찰 스케일) 에는 부가 옵션이 있어, 특정 마찰 스케일을 다양한 피지컬 머티리얼 유형으로 지정할 수 있습니다.

tires02.png

TireConfig 데이터 애셋 생성

  1. 콘텐츠 브라우저 에서 신규 추가 버튼을 클릭한 뒤, 컨텍스트 메뉴에서 기타 아래 데이터 애셋 을 선택합니다.

  2. 데이터 애셋 클래스 선택 창에서 TireConfig 을 선택하여 이 유형의 데이터 애셋을 만듭니다.

  3. 콘텐츠 브라우저 에 새로운 애셋이 생깁니다. 나중에 쉽게 찾을 수 있도록 알아보기 좋은 이름을 지어주세요.

newDataAsset.png

데이터 애셋 클래스 선택 창에는 TireType 데이터 애셋 클래스도 있는 것이 보일 수 있습니다. 이는 폐기된 함수로, 이전 프로젝트를 언리얼 엔진 4.15 (이상) 버전으로 업그레이드할 때만 사용됩니다. 언리얼 엔진 4.15 (이상) 버전을 사용한다면 이 데이터 애셋 유형을 사용할 이유는 없습니다.

휠 블루프린트

대부분의 경우 최소 두 개의 휠 유형이 있습니다. 스티어링에 영향받는 휠이 있고, 받지 않는 휠이 있습니다. 또한, 앞 또는 뒤 휠 크기가 다른 경우가 될 수 있습니다. 그럴 때는 다양한 반경, 질량, 폭, 핸드브레이크 효과, 서스펜션, 기타 여러가지 속성으로 비히클에 원하는 핸들링 느낌을 낼 수 있습니다.

WheelBlueprintDetailsPanel.png

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

휠 블루프린트 생성

  1. 콘텐츠 브라우저 에서 신규 추가 버튼을 클릭한 뒤, 메뉴에서 블루프린트 클래스 를 선택합니다.

  2. 부모 클래스 선택 창에서 모든 클래스 아래 wheel 을 검색한 뒤 VehicleWheel 을 선택합니다.

  3. 콘텐츠 브라우저 에 새 애셋이 생성됩니다. 나중에 쉽게 찾을 수 있도록 알아보기 쉬운 이름을 지어주세요.

  4. 옵션 - 위 단계를 반복하여 frontrear 휠 유형을 만드세요.

newWheels.png

휠 블루프린트 편집

휠 블루프린트가 생겼으니, 블루프린트 에디터에서 열어보면 휠 편집에 쓸 수 있는 모든 옵션이 보일 것입니다!

각 휠마다 변경해야 하는 초기 프로퍼티가 다섯 있고, 나머지는 비히클 작동 방식을 변경하는 것이기에 나중에 실제 게임에서 테스트해 보며 조정해 줘야 할 수 있습니다.

  • Shape Radius 셰이프 반경

  • Shape Width 셰이프 폭

  • Affected by Handbrake (usually restricted to the rear wheels) 핸드브레이크에 영향받음 (보통 뒷바퀴에만 제한)

  • Steer Angle (usually only the front wheels) 스티어 각도 (보통 앞바퀴만)

wheelProps.png

여기 프로퍼티는 비히클 게임의 버기에 일치하도록 설정되어 있습니다. 별도의 스켈레탈 메시를 사용하는 경우, Shape RadiusShape Width 에 다른 값을 사용해야 할 수 있습니다.

이제 Tire 섹션 아래, Tire Config 선택 박스를 사용하여 처음에 만든 Tire Config 데이터 애셋을 할당할 수 있습니다.

TireConfig.png

최종 결과

이 시점에서 타이어가 표면에 얼마만큼 미끄러지나 조절하는 데 사용되는 Tire Config 데이터 애셋 구성과, 휠에 각기 다른 프로퍼티를 지정하는 데 사용할 수 있는 휠 블루프린트 구성도 마쳤습니다. 다음 단계에서는 계속해서 비히클을 만드는 데 필요한 애셋을 제작할텐데, 애니메이션 블루프린트를 만들어 비히클에 필요한 (타이어 회전, 스티어링, 서스펜션 등의) 필수 애니메이션 정보를 전부 처리하도록 하겠습니다.

3 - 비히클 애니메이션 블루프린트

이 시점에서 TireConfig 데이터 애셋과 휠 블루프린트를 만들어 두었으니, 나중에 비히클 블루프린트에서 사용하겠습니다. 여기서는 계속해서 콘텐츠 준비 작업을 하겠습니다. 비히클의 휠에 필요한 애니메이션 전부를 구동시키는 애니메이션 블루프린트 제작 작업입니다.

애니메이션 블루프린트

애니메이션 블루프린트는 비히클 스켈레탈 메시의 애니메이션 제어에 사용되며, 타이어 회전, 서스펜션, 핸드브레이크, 스티어링 등 비히클 전용 애니메이션을 만들 수 있습니다. 이와 같은 것들에 대한 애니메이션 제작 작업을 다수 줄이기 위해, Wheel Handler 노드를 사용하여 이러한 유형의 애니메이션을 구동시켜 주면 됩니다.

Wheel Handler 노드

애니메이션 블루프린트가 비히클의 애니메이션을 구하고 제어하는 데 사용되는 곳, 보다 구체적으로 Wheel Handler 노드는 추가 구성 작업을 거의 하지 않고도 꽤나 쉽게 모든 비히클 애니메이션을 제어할 수 있습니다. 단순히 휠에서 필수 정보(얼마나 빨리 회전하는가? 핸드브레이크에 영향받는가? 이 휠의 서스펜션 세팅은 어떠한가?)를 구해온 뒤, 그 쿼리 결과를 휠이 할당된 본의 애니메이션으로 전환합니다.

wheelHandler02.png

애니메이션 블루프린트 생성

  1. 콘텐츠 브라우저 에서 신규 추가 버튼을 클릭한 뒤 애니메이션 위에 커서를 올리면 나오는 메뉴 목록에서 애니메이션 블루프린트 를 선택합니다.

  2. 애니메이션 블루프린트 생성 창의 비히클 목록에서 자신의 스켈레톤을 찾아 선택합니다. 그리고 OK 를 클릭합니다.

    다른 방법으로는, 콘텐츠 브라우저 에서 스켈레탈 메시를 바로 선택하고 생성 > 애님 블루프린트 를 선택하여 애니메이션 블루프린트를 바로 만들 수도 있습니다.

    newAnimBP.png

  3. 작업할 애니메이션 블루프린트가 생겼으면, 콘텐츠 브라우저 에서 선택하고 더블클릭하는 것으로 열 수 있습니다. 메인 툴바에서 클래스 세팅 을 선택한 뒤 디테일 패널에서 Parent Class (부모 클래스)를 VehicleAnimInstance 로 설정하면 됩니다.

    AnimBPParentClass.png

    올바른 Parent Class 에 설정하지 않으면, 나중에 필요한 노드에 접근할 수 없게 됩니다.

  4. 애님 그래프 에서 우클릭으로 컨텍스트 메뉴를 띄운 뒤 Mesh Space Ref Pose 노드를 검색하는 것으로 시작합니다. 리스트에서 선택하면 그 자리에 생성됩니다.

    meshSpace.png

  5. 다음, 애님 그래프 에 우클릭하여 컨텍스트 메뉴를 띄우고 Whell Handler 를 검색하여 선택하면 생성됩니다.

    wheelHandler01.png

  6. 이제 애님 그래프 가 다음과 같아 보이도록 노드를 연결합니다.

    animBPanimGraph.png

  7. 옵션으로, (비히클 게임의 버기처럼) 지지대나 다른 서스펜션이 추가로 필요한 경우 애니메이션 그래프에서 노드를 추가하여 그 폴리곤에 영향을 주는 조인트 처리를 해 줘야 합니다. 비히클 게임의 버기의 경우, 부가 조인트를 사용하여 휠에 연결되는 차축 제어를 하고 있습니다. 이는 단순한 Look At 노드로 구동되는데, 휠 조인트를 주면 Wheel Handler 노드로 구동시키고 Look At 노드는 서스펜션이 휠에 계속 붙어있도록 해줍니다.

    fullVehGameAnimBP.png

최종 결과

애니메이션 블루프린트 구성 작업이 완료되었습니다! Component to Local 변환 노드가 자동 생성되어 이제 애니메이션 블루프린트가 비히클의 휠을 구동시킬 것입니다. 계속해서 다음 단계에서는 이전 단계의 모든 것들을 조립하는 비히클 블루프린트를 만드는 법을 알아보겠습니다.

4 - 비히클 블루프린트 제작

지금까지 여러가지 다양한 애셋(TireConfig 데이터 애셋, 휠 블루프린트, 애니메이션 블루프린트)들을 만들었는데, 이들을 조립해야 언리얼 엔진 4 (UE4) 에서 정상 작동하는 비히클을 만들 수 있습니다. 여기서는 기존에 생성 및 구성해 둔 애셋들을 사용하여 비히클 블루프린트를 만들어 보겠습니다.

비히클 블루프린트 생성 및 편집

  1. 콘텐츠 브라우저 에서 신규 추가 버튼을 클릭한 뒤 메뉴에서 블루프린트 클래스 를 선택합니다.

  2. 부모 클래스 선택 창에서 모든 클래스 아래 wheel 을 검색한 뒤 WheeledVehicle 을 선택합니다.

  3. 콘텐츠 브라우저 에 새 블루프린트 애셋이 생성됩니다. 나중에 쉽게 찾을 수 있도록 알아보기 쉬운 이름을 지어주세요.

    newVehicle.png

  4. 콘텐츠 브라우저에서 새로 만든 비히클 블루프린트를 선택하여 엽니다.

    MyVehicleBP.png

  5. 컴포넌트 창 에서 Mesh 라는 이름의 Skeletal Mesh Component 를 클릭합니다. 그리고 디테일 패널에서 Skeletal Mesh 선택 박스를 자체 스켈레탈 메시 애셋으로 설정합니다.

    ComponentsWindow.png

  6. Anim Blueprint Generated Class 를 이 안내서 2 단계에 생성한 비히클의 애니메이션 블루프린트로 설정합니다.

    AnimBPandSkelMesh.png

  7. 컴포넌트 창으로 돌아가 컴포넌트 추가 버튼을 선택한 뒤 Camera Component 를 선택합니다.

    addCamera.png

  8. 블루프린트 에디터의 뷰포트에서 비히클을 기준으로 카메라가 있었으면 하는 위치를 잡습니다. 아래 그림에서는 약간 뒤쪽에서 들어올리고, 비히클 쪽으로 살짝 기울였습니다.

    cameraPlacement.png

  9. Camera 컴포넌트를 여전히 선택한 채 (디테일 패널의 Camera Settings 아래) Use Pawn Control Rotation 옵션을 끕니다. 카메라를 (플레이어 컨트롤러 방향이 아닌) 뷰 방향으로 고정시킵니다.

    cameraControllerOff.png

  10. 다음, 컴포넌트 창에서 Vehicle Movement Component 를 선택합니다.

    ComponentsWindow2.png

    디테일 패널의 Vehicle Setup 섹션 아래, Wheel Setups 옆의 화살표를 펼친 뒤 각 (0-3) 휠에 대해 다음과 같이 설정합니다:

    • Wheel Class 는 앞서 만든 휠 블루프린트로 설정합니다.

    • Bone Name 은 휠이 제어할 조인트 이름으로 설정합니다.

      wheelsSetup.png

      위 그림의 Bone Name 은 이 스켈레탈 메시 전용입니다. 비히클 게임의 비히클을 사용한다면, 이 Bone Name 을 사용하면 됩니다.

    휠 할당 순서는 앞바퀴인지 뒷바퀴인지와는 상관 없으며, Bone NameWheel Class 만 영향을 줍니다. 정리 목적 상, 앞뒷바퀴 둘씩 같이 묶는 것이 좋습니다.

    휠이 4 개 이상 필요한 경우, Wheel Setups 프로퍼티 옆 + 아이콘을 클릭하여 추가하면 됩니다.

최종 결과

이 시점에서, 비히클이 미니밴보다 엄청 크지 않다 가정한다면, 이 안내서 다음 단계부터 비히클을 제대로 테스트하기 위해 입력 및 컨트롤 구성을 할 때 기본값에서부터 시작하면 좋을 것입니다.

5 - 함수 기능 셋업 및 테스트

이제, 언리얼 엔진 4 의 휠, 애니메이션, 비히클 블루프린트를 만들었으니, 완벽 작동하는 비히클을 만들 준비가 전부 되었습니다. 이제 남은 것은 게임에서 실제로 제어하는 것입니다! 이번 단계에서는, 비히클을 운전하고 성능을 테스트하기 위해 필요한 축 매핑과 바인딩 셋업 방법을 보여드리겠습니다.

비히클 테스트 셋업 방법은 여러가지인데, 기본 프로젝트 템플릿으로 시작했다 가정한다면, 모든 입력을 추가해 줘야 비히클 제어가 가능합니다. 기존 템플릿으로 시작했다면, 이들 축 매핑 및 바인딩 중 일부( 또는 전부)는 이미 프로젝트에서 사용할 수 있을 수도 있습니다.

컨트롤 셋업

  1. 메인 메뉴의 편집 > 프로젝트 세팅 으로 프로젝트 세팅 창을 엽니다. 사이드 패널의 Engine (엔진) 섹션에서 Input (입력)을 선택합니다.

    input.png

  2. 바인딩 메뉴에서, (현재 나열되어 있지 않은 경우) 컨트롤을 다음과 같이 셋업합니다. 나열되어 있지 않으면 여기 나온 대로 셋업되어 있는지 다시 한 번 확인하는 것이 비히클 정상 작동에 좋습니다.

    1. 먼저 Action Mappings (액션 매핑) 프로퍼티 옆의 + 부호를 클릭하여 액션 매핑 셋업을 해주겠습니다.

      1TF.png

    2. 액션 매핑 이름을 NewActionMapping_0 에서 Handbrake 로 변경합니다. 그리고 이 프로퍼티를 펼친 뒤 선택 박스를 사용하여 키 값을 None (없음)에서 Space Bar (스페이스 바)로 변경합니다.

      2TF.png

    3. 다음, Axis Mappings (축 매핑) 프로퍼티 옆 + 부호를 클릭하여 축 매핑 셋업을 해주겠습니다. 두 개의 축 매핑에 대해 다음과 같이 반복해 줍니다:

      3TF.png

    4. 첫 축 매핑 이름을 NewAxisMapping_0 에서 Forward 로 변경합니다. 두 번째 것에 대해서도 똑같이 이름을 NewAxisMapping_1 에서 Right 로 변경합니다.

      4TF.png

    5. Forward 축 매핑을 펼친 뒤 + 부호를 한 번 클릭하여 Forward 아래 두 개의 축 매핑이 오도록 합니다. 그리고 첫 번째 None 이 W 키를 입력으로 사용하도록 설정합니다. 두 번째 None 은 S 키를 사용하도록 설정합니다.

      5TF.png

    6. Forward 축 매핑 아래 S 키 입력 옆 Scale 값을 -1 로 설정합니다.

      6TF.png

    7. Right 축 매핑을 펼치고 + 를 한 번 클릭하여 Right 아래 두 개의 축 매핑이 오도록 합니다. 그리고 첫 번째 None 은 D 키로, 두 번째는 A 키로 설정합니다.

      7TF.png

    8. Right 축 매핑 아래 A 키 입력 옆 Scale 값을 -1 로 변경합니다.

      8TF.png

    액션 및 축 매핑 설정이 완료되었으면, 바인딩은 다음과 같을 것입니다:

    SetupInputs.png

  3. 컨트롤 셋업이 되었으니, 이제 실제로 무언가 작업을 해야 합니다. 앞서 만든 비히클 블루프린트 를 열고 이벤트 그래프 를 찾습니다. 여기서 프로젝트 세팅의 입력 섹션에서 만든 축 및 액션 이벤트 호출이 가능할 것입니다.

    MyVehicleBP.png

  4. 이벤트 그래프에서, 스로틀 셋업은 다음과 같습니다:

    throttleBP.png

  5. 이벤트 그래프에서, 스티어링 셋업은 다음과 같습니다:

    steeringBP.png

  6. 이벤트 그래프에서, 핸드 브레이크 셋업은 다음과 같습니다:

    handbrakeBP.png

최종 결과

입력 이벤트를 추가했으니 이제 입력 이동을 받는 정상 작동 비히클이 생겼습니다! 다음 마지막 단계에서는, 게임을 실행하면 비히클 폰을 기본 폰으로 사용하는 게임 모드를 새로 셋업하겠습니다.

6 - 새 게임 모드 셋업

이전 단계에서, 비히클 블루프린트 구성 및 정상 작동을 위해 필요한 모든 컨트롤 할당 작업을 마쳤습니다. 이번 마지막 단계에서는 우리 비히클 블루프린트를 게임의 기본 폰으로 사용하도록 새 Game Mode (게임 모드)를 구성해 보겠습니다.

이 안내서를 시작할 때 기본 프로젝트 템플릿을 사용하지 않았다면, 이미 할당된 게임 모드가 있어 이번 단계에서 만들려는 것과 충돌이 일어납니다. 게임 모드를 새로 만들어 지금까지 만든 비히클을 스폰하는 방법은 아래와 같습니다.

새 게임 모드 생성

  1. 콘텐츠 브라우저 에서 신규 추가 버튼을 클릭하고 메뉴 목록에서 블루프린트 클래스 를 선택합니다.

  2. 부모 클래스 선택 창에서 Game Mode Base 를 선택한 뒤 선택 버튼을 눌러 게임 모드 블루프린트를 만듭니다.

    newGameMode.png

  3. 콘텐프 브라우저 에서 새로 만든 게임 모드 블루프린트를 더블클릭하여 편집할 수 있도록 합니다. 디테일 에서 Classes 아래 Default Pawn Class 옆, 드롭다운 선택 버튼을 사용하여 (3 단계에서 만든) Your Vehicle Blueprint 를 선택합니다.

    defaultPawnClass.png

    그 후 저장 한 뒤 이 창을 닫습니다.

  4. 메인 뷰포트 창에서, 월드 세팅 탭의 Game Mode 섹션 아래 GameMode Override (게임모드 오버라이드)를 Your Game Mode Blueprint 로 설정합니다.

    setGameMode.png

최종 결과

Play.png

축하합니다! 이제 에디터에서 플레이(PIE)해 보면 직접 만든 바로 그 비히클이 자동 스폰되는 것이 보일 것입니다. UE4 에서 제대로 된 비히클을 만드는 데 필요한 것들은 모두 배우셨습니다. 그 내용은 다음과 같습니다:

✓ TireConfig 데이터 애셋 환경설정 방법.
✓ 앞뒷바퀴에 대한 휠 블루프린트 구성 방법.
✓ 비히클 전용 애니메이션 블루프린트 구성 방법.
✓ 스켈레탈 메시, 애니메이션 블루프린트, 휠 블루프린트로 비히클 블루프린트를 구성하는 방법.
✓ 비히클 제어를 위한 축 및 바인딩 매핑 구성 방법. ✓ 비히클 스폰을 위해 새 게임 모드 생성 및 할당 방법.

언리얼 엔진에서 비히클 추가 작업

비히클 관련 부가 자료는 다음과 같습니다:

태그
Select Skin
Light
Dark

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

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

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

네이버 카페
공식 포럼