[이득우 언리얼 C++] 5. 폰의 제작과 조작

    💻 Code : https://github.com/tedison7/ArenaBattle

    폰의 구성요소

    기본적인 인간형 폰을 제작하기 위해 고려할 요소는 다음과 같다.

    • 시각적 요소 : 애니메이션 기능을 가지고 있는 스켈레탈 메시 컴포넌트. 애니메이션을 재생하도록 리깅(Rigging)데이터를 추가한 메시를 스켈레탈 메시라고 하며 이를 관리하는 컴포넌트가 스켈레탈 메시 컴포넌트다.
    • 충돌 요소 : 인간형의 경우 일반적으로 캡슐 컴포넌트를 사용한다.
    • 움직임 요소 : 폰 무브 컴포넌트를 사용한다. FloatingPawnMovement와 CharacterMovement 두가지가 있다.
    • 내비게이션(Navigation) : 폰은 엔진의 내비게이션 시스템과 연동되어 스스로 목적지까지 이동하는 길찾기 기능을 가지고 있다.
    • 카메라 출력 : 플레이어 컨트롤러가 폰에 빙의 할 때 자동으로 폰에 부착된 카메라의 상을 플레이어 화면으로 전송한다.

    다음 예제를 위해 마켓플레이스의 InfinityBlade : Warriors 패키지를 다운로드 하고 프로젝트에 추가하였다.

    C++ 코드를 사용하여 폰을 제작해보자. 다음과 같은 컴포넌트를 사용할 것이다.

    • Capsule : 폰의 움직임을 담당하는 충돌 컴포넌트 (루트 컴포넌트)
    • SkeletalMesh : 캐릭터를 보여주고 애니메이션도 담당한다. 캐릭터 제작 프로그램의 좌표계와 언리얼 엔진의 좌표게가 다르기때문에 Z축으로 -90도 회전 시켜 맞춰야 한다.
    • FloatingPawnMovement : 플레이어의 입력에 따라 캐릭터가 움직이도록 설정해주는 컴포넌트 (중력을 고려하지 않은 움직임)
    • SpringArm : 3인칭 시점으로 카메라구도를 설정하는 컴포넌트
    • Camera : 폰에 카메라 컴포넌트를 부착하면 엔진은 카메라가 바라보는 게임 세계의 화면을 플레이어의 화면으로 전송한다.

    폰의 조작

    폰에 입력에 대한 처리 로직과 폰 무브먼트를 설정해보자. 프로젝트 세팅입력탭에서 지정할 수 있다. Bindings 섹션에서 Action Mappings와 Axis Mappings 두가지 항목이 있다.

    • 축 매핑 (Axis Mappings) : 조이스틱의 레버 신호를 설정하는 항목이다. 레버가 중립에 있으면 0을 끝에 있으면 1 혹은 -1을 게임 로직에 전달한다.
    • 액션 매핑 (Action Mappings) : 버튼의 신호를 설정하는 항목이다. 버튼을 눌렀을때와 떼었을 때 신호를 전달 한다.

    MoveForward와 MoveRight 항목으로 wasd로 상하 좌우 입력이 가능하도록 이미 설정되어있지만 실습을 위해 AxisMapping에 UpDown과 LeftRight 항목을 직접 구현해보자

    이후 AABPawn 클래스에 축 이벤트를 연결(Binding) 해보자.

    그리고 에디터 뷰포트에 바로 포커스가 갈수 있도록 다음과 같이 코드를 추가하였다.

    애니메이션의 설정

    캐릭터의 애니메이션을 적용하기 위해 예제 파일에 있는 애니메이션 파일을 프로젝트에 임포트 해보자. Animations 폴더를 만들어 임포트 하였고 Skeleton은 SK_MAnnequin_Skelton을 선택하였다. 임포트된 애셋들중 하나를 더블클릭하면 애니메이션이 동작함을 확인할 수 있다. 프리뷰 씬 세팅 메뉴에서 메시를 변경하면 다른 캐릭터로 애니메이션을 재생할 수 있다.

    이어서 달리기 애니메이션을 코드에서 로딩하도록 해보자.

    언리얼 엔진에서는 체계적으로 애니메이션을 관리할수 있도록 애니메이션 블루프린트라는 기능을 제공한다. 이번엔 애니메이션 블루프린트를 통해 달리기 애니메이션을 적용해보자.

    • 신규추가 > 애니메이션 > 애니메이션 블루프린트 메뉴
    • SK_Mannequin_Skeleton을 스켈레톤 애셋으로 지정
    • 애셋 이름을 WarriorAnimBluprint 로 지정
    • WarriorRun 애니메이션 재생 노드를 최종 애니메이션에 연결
    • 애니메이션 블루프린트를 AnimInstance 클래스로 코드에서 설정

    둘다 결과는 동일하게 달리는 모션이나온다.

    요약

    • 폰의 구성요소
    • 애니메이션 애셋과 애님 블루프린트에 대한 개념
    반응형

    댓글

    Designed by JB FACTORY