보행이동 기반 블렌딩

캐릭터의 걷기에서 달리기 애니메이션 블렌딩에 블렌드 스페이스를 사용하는 예제입니다.

Windows
MacOS
Linux
On this page

블렌드 스페이스애님 그래프 에서 샘플링 가능한 특수 애셋으로, 두 입력 값에 따라 애니메이션 블렌딩이 가능합니다. 단일 입력에 따른 두 애니메이션 사이의 단순 블렌딩은 애니메이션 블루프린트에서 사용할 수 있는 표준 블렌드 모드 중 하나를 사용하여 가능합니다. 블렌드 스페이스는 (현재는 둘로 제한되어 있지만) 다수의 값에 따라 다수의 애니메이션에 대해 보다 복잡한 블렌딩을 할 수 있는 방편을 마련해 줍니다.

여기서는 아래와 같이 블렌드 스페이스를 사용하여 캐릭터의 이동 속력과 방향에 따라 걷기/뛰기 애니메이션을 블렌딩하도록 하겠습니다.

EndResultImage.png

단계

여기서는 블루프린트 삼인칭 템플릿 프로젝트에 Animation Starter Pack 를 추가한 것을 사용합니다.

AnimationAssetPack.png

Animation Starter Pack 은 에픽 런처의 마켓플레이스 에서 무료로 받을 수 있습니다.

  1. 프로젝트의 Content/ThirdPersonBP/Blueprints 폴더에서 ThirdPersonGameMode 를 열고 Default Pawn ClassUe4ASP_Character 로 설정합니다.

    BlendSpace1.png

    이렇게 하면 Animation Starter Pack 프로젝트와 함께 생성된 플레이 캐릭터를 사용할 수 있습니다.

  2. 레벨에서 ThirdPersonCharacter 를 선택하고 레벨에서 삭제합니다.

    BlendSpace2.png

    레벨에서 이 캐릭터를 지우는 것은, 이전 단계의 캐릭터를 스폰시키기 위함입니다.

  3. Content/AnimStarterPack/UE4_Mannequin/Mesh 폴더에서 UE4_Mannequin우클릭 하고 생성 아래 블렌드 스페이스 를 선택하고 이름을 짓습니다.

    BlendSpace3.png

    블렌드 스페이스 애셋은 참조할 스켈레톤 애셋이 필요한데, 여기서는 이 스켈레톤 애셋에서 블렌드 스페이스를 생성하는 단축 방법을 사용하고 있습니다. 그 이름은 MyBlendSpace 입니다.

  4. 블렌드 스페이스의 애셋 디테일 패널에서 Axis Settings 아래 다음 값을 추가합니다:

    BlendSpace4.png

    Horizontal Axis (가로 축)은 이동 Direction (방향)을 각도 단위로 나타냅니다:

    가로 축 세팅

    Name

    Direction

    Minimum Axis Value

    -180

    Maximum Axis Value

    180

    Number of Grid Divisions

    4

    Interpolation Time

    0

    Interpolation Type

    Averaged Interpolation

    Vertical Axis (세로 축)은 캐릭터의 이동 Speed (속력)을 나타냅니다:

    세로 축 세팅

    Name

    Speed

    Minimum Axis Value

    0

    Maximum Axis Value

    250

    Number of Grid Divisions

    4

    Interpolation Time

    0

    Interpolation Type

    Averaged Interpolation

  5. 애셋 브라우저 창에서 Walk_Fwd_Rifle_Ironsights 애니메이션을 끌어 그리드의 중앙 하단 위치에 놓습니다.

    BlendSpace5.png

    그러면 이 블렌드 스페이스에 들어설 때 시작 위치가 됩니다.

  6. 아래처럼 Walk_Lt_Rifle_Ironsights 애니메이션을 1 위치로, Walk_Rt_Rifle_Ironsights 애니메이션을 2 위치로 끌어 놓습니다.

    BlendSpace6.png

    여기서 좌우로 움직일 때 사용할 애니메이션을 배치합니다.

  7. 아래처럼 Walk_Bwd_Rifle_Ironsights 애니메이션을 12 위치로 끌어 놓습니다.

    BlendSpace7.png

    여기서 뒤로 움직일 때 사용할 애니메이션을 배치합니다.

  8. 애셋 브라우저 에서 Jog_Fwd_Rifle 애니메이션을 그리드 중앙 상단으로 끌어 놓습니다.

    BlendSpace8.png

    이렇게 하면 속력이 최대 250 이면서 좌우로 움직이지 않을 때, 즉 전방으로 뛸 때 다양한 애니메이션을 사용할 수 있습니다.

  9. 아래처럼 Jog_Lt_Rifle 애니메이션을 1 위치로, Jog_Rt_Rifle 애니메이션을 2 위치로 끌어 놓습니다.

    BlendSpace9.png

  10. 아래처럼 Jog_Bwd_Rifle 애니메이션을 12 위치로 끌어 놓습니다.

    BlendSpace10.png

  11. Content/AnimStarterPack 폴더의 UE4ASP_HeroTPP_AnimBlueprint 를 열고 내 블루프린트 패널에서 Locomotion 그래프에 더블클릭 합니다.

    BlendSpace11.png

  12. Jog 스테이트를 더블클릭하여 그래프를 엽니다.

    BlendSpace12.png

    스테이트 머신 에는 이미 Jog 스테이트가, 그 안에는 다양한 Jogging 모션에 대한 블렌드 스페이스가 있습니다.

  13. 아래와 같이 애셋 브라우저 에서 MyBlendSpace 를 끌어 그래프에 놓고 BS_Jog 블렌드 스페이스를 대체합니다.

    BlendSpace13.png

    기본 블렌드 스페이스는 Walking 스테이트가 포함되어 있지 않지만, 블렌드 스페이스에는 있으니 대체해 줍시다!

  14. Content/AnimStarterPack 폴더의 Ue4ASP_Character 를 엽니다.

  15. 그래프에서 Crouch 라 적힌 부분을 찾아 지우면 경고와 오류가 제거됩니다.

    BlendSpace14.png

    기본적으로 Animation Starter Pack 에는 웅크리기 키 바인딩이 되어 있지만, 우리 프로젝트에는 되어있지 않습니다. 이 예제에서는 웅크려 걷기 기능을 제거하겠습니다.

  16. 그래프에 우클릭 하고 Left Shift Key Event 를 추가한 뒤, 컴포넌트 탭에서 CharacterMovement 를 끌어 그래프에 놓습니다.

    BlendSpace15.png

    Left Shift 키를 누르고 있으면 걷기에서 달리기로 전환됩니다.

  17. CharacterMovement 노드를 끌어 놓고 PressedReleased 에 대한 Set Max Walk Speed 를 각각 250100 으로 설정합니다.

    BlendSpace17.png

    Left Shift 가 눌렸는지에 따라 이동 속력이 변경되고, 그에 따라 게임에서의 캐릭터 이동 속력이 변경됩니다.

  18. CharacterMovement 컴포넌트를 클릭한 뒤 디테일 패널에서 Max Walk Speed100 으로 설정합니다.

    BlendSpace20.png

    캐릭터가 걷기 상태로 시작할 수 있도록 기본 이동 속력을 업데이트해 줘야 합니다.

  19. 컴포넌트 탭에서 CapsuleComponent 를 클릭하고, 디테일 패널에서 Hidden in Game 옵션을 체크합니다.

    BlendSpace18.png

    그러면 게임에서의 콜리전 캡슐 디버그 표시가 꺼집니다.

  20. 컴파일 후 툴바의 에디터에서 플레이 버튼을 클릭합니다.

최종 결과

에디터에서 플레이하면 WASD 키로 움직이며, 캐릭터는 기본적으로 걸어다니다가 방향을 바꾸면 걷기 애니메이션이 블렌딩됩니다. 서 있을 때 WASD 키를 누르며 왼쪽 Shift 를 누르고 있으면 캐릭터가 걷기/조준 애니메이션에서 낮춘/조준 뛰기 애니메이션으로 블렌딩되어, 사실상 캐릭터의 질주 자세가 됩니다.

Select Skin
Light
Dark

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback