본문 바로가기
공부/Unreal Engine 4

[언리얼4] 상속관계, 키입력 세팅

by MY블로그 2023. 10. 25.

1. Actor 클래스의 상속 관계

액터 클래스는 최상위 클래스로 트랜드폼과 연관 된다.

폰 클래스는 액터 클래스를 상속받고있으며 트랜스폼, 컨트롤러와 연관 된다.

캐릭터 클래스는 폴 클래스를 상속받고 있으며 트랜스폼, 컨트롤러, 무브먼트와 연관 된다.

 

2. 클래스와 인스턴스 객체

콘텐츠 브라우저에서 보이는 폴더안에 있는 것들은 클래스(Class)

아주아주 간편하게 콘텐츠브라우저에서 마우스로 드래그&드랍으로 화면에 배치하고

월드 아웃라이너를 본다면 인스턴스화된 객체들을 볼수 있다! 완전편리

3. 블루프린트(BP) 생성

브라우저에서 아무 클래스혹은 메쉬를 화면상에 드래그&드랍 으로 객체를 생성

생성된 객체를 클릭하고 디테일에서 블루프린트/스크립트 추가를 선택.

부모클래스를 선택하고 생성

막 생성된 BP에는 뷰포트가 가장먼저 보이는데

이때의 뷰포트는 해당 객체의 Local 좌표를 사용

시각적으로 보기위해서는 뷰포트를 사용하지만

기본적으로 알고있는 노드와 선연결등은 이벤트 그래프 창에서 진행합니다.

4. Actor에 상속된 카메라 회전 고정하기

보통 Actor에 카메라를 상속한다면 Actor가 회전할경우 카메라의 시점또한 같이 회전합니다.

보통 탑뷰형태의 게임에서 캐릭터가 이리저리 움직이고 회전하여도 카메라는 캐릭터를 따라가기만할뿐 회전하지는 않는기능을 구현해봅니다.

Actor에 상속된 카메라가 Actor 회전에 영향을 받는 모습!

우선 BP의 좌측 상단의 컴포넌트 카테고리에서 컴포넌트 추가 버튼을 사용하여 

Spring Arm 컴포넌트를 추가하고 Actor에 있던 카메라를 해당 컴포넌트의 하위로 넣어주도록 합니다.

DX에서와는 다르게.. 언리얼에서는 대부분의 것들은 검색과 드래그&드랍 으로 해결이 가능했습니다..

Camera를 드래그하여 SpringArm에 드랍시켜준다면 짜잔.. 자식노드로 들어갑니다.

이후 SpringArm을 클릭하여 우측의 디테일목록에서 Camera Settings 메뉴를 찾아주고

inherit Yaw(좌우 회전에대한 상속)의 체크박스를 해제.

상속을 해제한다면 Actor가 좌우 회전을 하더라도 상속된 SpringArm(+Camera)는

부모(Actor) 의 좌우 회전에 영향을 받지 않게 됩니다!

5. 키입력

프로젝트 상단 편집 메뉴 > 프로젝트 세팅 으로 들어갑니다.

엔진 카테고리 > 입력

축 매핑에서 + 버튼을 누르고 이름을 설정해줍니다.

설정된 이름은 BP에서 이벤트 노드로 검색이 가능하게 됩니다.

간단하게 플레이어의 시점을 기준으로 상하좌우 4방향으로 움직이는 모션을 만들기위하여

기본키설정 wsad를 지정합니다.

이벤트노드를 4개생성하지 않기위해서 앞쪽과 오른쪽의 반대를 -1 scale로 만들어줍니다.

BP의 이벤트 그래프창으로 와서 빈공간에 우클릭후 축 매핑에 설정해준 이름으로 검색

축 이벤트의 MoveForward를 찾아볼수 있습니다.

똑같은 방식으로 Add Movement Input 함수의 노드를 배치하여 이벤트 노드와 연결합니다.

앞뒤 움직임과 관련된 MoveForward 입력축 이벤트 & 좌우 움직임과 관련된 MoveRight 를 똑같이 만들어줍니다.

간단하게 Add Movement Input 함수에서 World Direction 방향을 앞뒤 X 축으로 값을주거나

좌우 Y 축으로 값을 주는 느낌으로 설정합니다.

입력될때마다 설정해준 값이 더해집니다! 반대방향은 -1 씩 매프레임 더해지기때문에

반대방향으로 가게 됩니다.

실행시 위의 GIF 이미지처럼 Actor 기준의 상하좌우가아닌 World 좌표상의 상하좌우 방향으로 이동하는 모습입니다.

Actor 기준으로 이동시키려면 World Direction에 입력값으로 Actor의 Forward 방향을 받아와서 넣어주면됩니다!

 

5. 이동방향으로 Actor의 회전 보간하기

노드를 다시 기본으로 되돌려 단순하게 키입력만으로 Actor 클래스가 이동하는 방향으로 회전하도록 해봅니다.

BP가아닌 프로젝트의 메인으로 오도록 합니다.

현재 움직이고있는 Actor 객체를 선택하고 우측의 Detail에서 Character Movement ( Rotation Settiong) 을 찾도록 합니다.

만일 스크롤을 내려가며 찾기 힘들다 할 경우 Rotation 을 검색한다면 바로 찾기가능!

Use Controller Desired Rotation 상세 설명!

Orient Rotation To Movement 상세 설명!

상하좌우 이동방향키만 눌렀을 뿐인데 플레이어는 항상 이동방향으로 향하는 모습을 볼수 있습니다.

댓글