초보 코린이의 성장 일지

UE4 캐릭터 움직이기 본문

언리얼

UE4 캐릭터 움직이기

코오린이 2022. 12. 30. 21:54

셋팅 -> 프로젝트 셋팅 -> 맵&모드 안에서 설정 가능

에디터 시작 맵 = 에디터가 열리면 기본으로 이 프로젝트에 맵을 열어주는 설정

게임 기본 맵 = 프로젝트 빌드를 시작하면 시작되는 맵 설정

 

셋팅 -> 프로젝트 셋팅 -> 엔진 -> 입력 안에서 설정 가능

액션 매핑 = 캐릭터의 공격, 뛰기 등등 한번만 입력하게 되는 입력값은 액션매핑

축 매핑 = 누르고 있을때 값들이 연속으로 들어오는 입력값은 축매핑

 

동작을 구분하기 위해 이름을 정해주고 키를 입력 받음과 동시에 Scale를 조절해준다

ex) 위 그림과 같이 MoveRight라는 이름 그대로 오른쪽으로 움직인다는 키 셋팅이다.

Scale값이 1,0이 오른쪽 방향을 나타낸다면, 반대방향으로 방향을 바꿀때는 -1.0으로 반대를 가리키게 하면 된다.

 

키 설정을 해놓은 이름을 가지고와 노드 Add Movement Input를 선언하고 연결해준다

Add Movement Input = 계속 들어오는 값을 누적시켜주는 기능을 한다.

World Direction = 방향을 정해주는 기능, 축방향 (1.0이면 전방, -1.0이면 후방)

 

위와 동일하게 동작을 위해 노드를 연결해준다. 다만 다른것은 World Direction이다.

위에 그림에서 Movement는 전방을 정해주는 기능이였다면, 지금 그림에 있는 Movement는 좌우 방향을 결정한다.

위 전방을 향한 방향은 X축을 설정하지만 지금은 좌우를 설정해야하기 때문에 오른쪽은 Y축 (Yaw)를 1.0값을 넣어줘야한다. 그럼 반대로 왼쪽은 오른쪽에 반대 방향을 가리키는 값 -1.0을 넣어주면된다.

 

이 전 블로그 내용에  SpringArm 기능설명

SpringArm은 캐릭터와 카메라 간에 간격을 나타낸다. 이름이 Spring인것처럼 캐릭터가 움직이면 카메라가 똑같이 가지 않고 나중에 카메라가 이동하는 방식이 게임상에는 많기 때문에 그 기능을 해준다.

우선 기본적으로 캐릭터 위치에 따라 적절한 위치를 설정해준다.

 

SpringArm은 클릭한 후 오른쪽 설정란에 Lag에 들어가면 Enable Camera Lag 칸이 체크가 안되어있을 것이다.

체크를 해주게되면 밑에 수치들이 수정 할 수 있게 살아나게 되는데 이 설정들은 이 카메라가 얼마나 부드럽게 작용하고 캐릭터를 따라올지 설정해주는 값이다. 모든 설정이 끝나고 실행하면 캐릭터가 이동후 카메라가 따라오는게 눈에 보일 것이다.

 

HorizontalLook는 마우스 상하좌우를 나타내 줄 것이다. 만일 오른쪽으로 가게되면 + 값 반대쪽으로가면 자연스럽게 - 값으로 값이 자동으로 들어오게 된다. 이 설정은 하는 이유는 일반적인 게임에서 마우스를 위쪽으로 올리 시야는 밑으로 숙여지는 구조를 띄고 있기 때문에 축을 뒤집어 줘야한다.

 

마우스 좌우를 나타낼 Z축인 Yaw 회전

오른쪽 노드인 Add Controller은 카메라를 나타낸다고 생각하면 된다. Yaw는 Z축 회전을 나타낸다.

 

오른쪽 노드인 Add Controller Pitch는 Y축 회전을 나타낸다.

설정을 다 끝냈지만 실행을 시켜보면 좌우 회전은 되고있는데 위아래 회전은 진행이 되지 않는다.

그 이유는 SpringArm으로 가서 설정을 해줘야 할게 있다. 아래에서 설명하겠다.

 

설정란에 Camera Settings를 보면 맨위 Use Pawn Control Rotation 체크가 해제되어 있을 것이다.

이걸 체크해주게되면 비로소 좌우회전까지 가능하게 된다.

 

위에 설정을 적용했을때 캐릭터가 움직이면서 카메라가 따라오게되고 모든방향으로 카메라 시점 및 캐릭터가 움직일수 있게된다. 하지만 카메라 방향을 회전시킨후 캐릭터를 움직이면 이상한 방향으로 움직이게 된다. 절대공간에서에 X, Y가 되기 떄문에 행동에 제약이 걸리게된다. 캐릭터가 바라보는곳으로 Local공간을 설정해 바라보는 방향으로 움직이게 설정해 줄 것이다.

 

예전에 배운 좌표를 나타내는 식

1. 위치 + 위치 = 위치

2. 위치 + 방향 = 위치

3. 위치 + Normailize(방향) * 거리 = 위치 (Normailize는 1로 만들어주고 시작해야하는 정규화를 나타낸다.)

4. A - B = B -> A 방향벡터

 

 

도형에 모양과 색깔을 변경하고 이동을 표현하기 위한 과정을 다룰것이다.

위에 모양은 화면에 표시할거기 때문에 Actor로 상속받아서 만들것이다.

Static Mesh 고정적 물체를 나타내는 컴포넌트이다. (애니메이션처럼 동작이없는 상태)

 

폴더에 보면 엔진콘텐츠라는 폴더가 있다. 이건 자체적으로 지원해주는 엔진에 들어있는 기능으로 가져다만 써야하며 설정을 변경하거나하면 큰 문제가 발생한다. 여기서 BasicShapes를 들어가 도형 몇개를 복사해 가져온다.

 

 

그 후 다시 구체를 눌러 들어가 오른쪽 설정에 Static Mesh에 복사해놓은 도형을 하나 선택한다.

 

그럼 원하는 선택한 도형으로 모양이 변경이 된다.

 

그럼 아래에 설정칸에 머터리얼이 열리게 되는데 우리가 생성해서 색상을 입혀놓은 머터리얼을 선택하면 아래와 같이

도형의 색깔이 바뀌게된다.

 

이제 이 도형을 클릭해서 들어가 이벤트그래프를 다뤄 동작을 할 것이다. 자기자신의 위치를 구하는 함수는 GetActorLocation이다. 변수는 Location으로 알기 쉽게 만들어준다. 변수 옆에있는 표시를 눌러주면 눈이 열리는 모양으로 바뀌게 되는데 이떄 컴파일을 한 번 해주면 설정란에 Drfault가 열리면서 설정을 할 수 있게 해준다.

 

자신의 위치를 구해주는 함수에서 시작으로 vector+ vector = Location값을 받아준다 그리고 그 값을  SetActorLocation에 전달하면 현재 위치에 Location을 준만큼 도형이 이동해 있을 것이다.

 

 

 

위치 + Normailize(방향) * 거리 = 위치 를 나타내는 과정

Direction + Normailize * Distance -> GetActorLocation(자신위치) 설정해준 거리만큼 + 를 통해 이동을 한다.

그 후 BeginPlay를 시작하고 SetactorLocation을 통해 실행

 

표 안에 Tolerance 0.0001은 0이 되면 버그가 터지기 때문에 그걸 방지하고자 값이 정해져있는 것이다.

 

 

이번에는 도형이 다른 도형으로 이동을 하게 만들어 볼 것이다.

 

Tick 이벤트 = 매 프레임마다 작동하는 이벤트를 말한다.

변수 Other를 가져와서 Get Distance To를 연결해주고 자기자신을 가리키는 Self 레퍼런스를 가져온다.

그리고 연결해주면 Other, Self의 두 Actor사이에 거리를 리턴해주는 기능을 한다.

> 표시는 무조건 위가 좌항이고 아래가 우항을 나타낸다. 또한 왼쪽 위에있는 항이 크다는 뜻이다 그 후 변수 Distance를 연결해주고  Branch와도 연결해준다. Branch는 프로그래밍에서 If 문을 나타내는 것으로 말 그대로 True면 Tick이벤트를

아니면 False로 가게 되는것이다.

 

결국 조건을 벗어나 False가 되면 Quit Game로 게임을 종료하게 만들어준다.

 

Other의 위치를 GetActorLocation을 통해서 얻어 올 것이다.

 

이제 따라가기 위한 동작을 위해 또 다른 위치를 구할 GetActorLocation을 통해서 위치를 얻을 것이다.

그리고 vector - vector을 함으로써 Other을 바라보는 방향이 나올 것이다. 그리고 방향 Vector을 정규화 시켜준다.

이젠 Speed를 곱해주기 위해 노드를 연결해준다.

 

 

Tick이벤트를 작동 시킬 것이기 때문에

 이동이나 회전을 할때 속도를 보장해주기 위한 Delta Seconds를 곱해준다

 

위에 * 된 Speed 값이 아래 *를 통해 들어간다. 그러면 아래 방향을 Speed만큼 이동을 하게되는데 그럼 이동을 하게 된 위치가 나오게 된다. 자신이 이제 이동을 해야하기 때문에 vector + vector를 해서 자기자신에 위치를 구해준다.

 

그 후 If문인 Branch를 통해 True의 노드를 연결해준다.

이렇게 하게되면 이제 따라가게 동작을 하게 된다.

 

이제 초록색 상자가 파란색 상자로 이동을 하게 될 것이다.

오른쪽 돋보가 표시 옆 스포이드 모양을 눌러 초록색 상자에서 파란색 상자를 클릭해주면 그 Target를 따라 가라고 명령이 내려진다. Speed값을 변경한 속도 만큼 이동을 하게 된다.

 

 

- 언리얼 Shader에서 나오는 Vector은 Vector4를 나타낸다. -

- 과정이 눈에 보이는것은 너무 좋으나 복잡해 질 수록 구분하기에 어려워 질 거 같다 -

- 많은 연습을 통해서 눈과 손에 익혀야 겠다 -

'언리얼' 카테고리의 다른 글

UE4 충돌 및 적과 충돌  (0) 2023.01.06
UE4 몽타주 사용, 캐릭터 콤보  (0) 2023.01.05
UE4 무기 장착 및 모션  (0) 2023.01.04
UE4 캐릭터 동작 및 카메라  (0) 2023.01.02
UE4 시작 2022, 12, 29  (0) 2022.12.29
Comments