언리얼엔진(UE)

[언리얼엔진] 4일차

2h1824 2024. 12. 19. 19:59

TIL

레벨 디자인 : 게임 내에서 플레이어가 경험할 수 있는 환경과 구조를 만드는 과정.

ㅡ> 레벨 디자인은 시각적 요소의 배치를 넘어, 플레이어 경험의 '핵심'을 설계하는 과정.

플레이어 캐릭터 : 게임에서 사용자가 조종하는 핵심 오브젝트. 

ㅡ> 플레이어 캐릭터는 게임을 성립시키는 중심이다. Because, 사용자 경험을 전달하는 매개체!

 

1. 플레이어 캐릭터 생성 및 카메라 부착

  1. 블루프린트 클래스를 이용해 구현
  2. 캐릭터의 메시는 Online learning kit에 있는 캐릭터 블루프린트에 제공되는 캐릭터 메시 사용
  3. 메시를 처음 설치하면 캡슐에서 벗어나 있고 월드의 방향과는 다른 방향을 보고 있으니 수정!
  4. 게임을 플레이 하는 유저가 캐릭터를 볼 때, 3인칭에서 볼 수 있도록 스프링 암을 이용해 카메라 추가.

스프링 암으로 캐릭터에 부착된 카메라

* 스프링 암의 주요 기능 4가지

  1. 카메라 거리 제어 : 카메라와 대상 사이의 기본 거리를 설정. 
  2. 부드러운 추적 : 카메라 움직임에 반응하는 탄성(spring) 효과가 있어, 캐릭터가 빠르게 이동하거나 회전할 때 카메라가 부드럽게 따라오게 할 수 있음. (옵션을 통해 카메라의 위치와 회전이 지연되는 효과를 추가할 수도 있음)
  3. 충돌 감지 및 거리 조정 : 장애물 충돌 감지 및  충돌 발생 시 카메라와 캐릭터 간의 거리를 자동으로 줄여 카메라 시야를 가리지 않도록 조정. 
  4. 회전 제어 : 카메라가 캐릭터를 중심으로 회전할 수 있도록 설정 가능. (옵션 설정에 따라 플레이어의 컨트롤 키 입력에 따라 카메라 회전 반영 가능)

(좌) 기본 카메라 시야, (우) 장애물 충돌을 감지 했을 때 조정된 카메라 시야

 

2. Enhanced Input System 을 활용한 Move, Look 구현

1. 유저의 키 입력을 매핑할 수 있게 입력 액션과 입력 매핑 컨텍스트 생성.

2. 입력 액션 Move, Look의 값 설정을 Axis2D (vector2D)로 설정. (Move, Look 둘 다 X,Y축을 모두 사용)

3. 입력 매핑 컨텍스트에서 매핑할 키와 세팅 행동 지정.

ㅡ> S는 뒤로 이동(X축의 부정), D는 오른쪽 이동(Y축 방향 ㅡ> 스위즐 입력 값), A는 왼쪽 이동(Y축 방향 반대 ㅡ> 스위즐 입력 값의 부정).

4. 블루프린트 이벤트그래프 노드 생성 및 연결

ㅡ> BeingPlay는 이벤트 시작 시, 플레이어의 컨트롤러에 연결된 인풋들을 위에서 작성한 매핑 컨텍스트에 연동. 

ㅡ> Move는 컨트롤러 기준으로 회전을 구현하도록 캐릭터의 rotation값을 받아와 벡터를 연산하도록 지정.

ㅡ> Look은 X값은 Yaw(좌우), Y값은 Pitch(상하)에 연결하여 동작 수행.

ㅡ> 캐릭터 무브먼트 컴포넌트의 '무브먼트 방향으로 회전 조정' 설정

ㅡ> 스프링 암 컴포넌트의 '폰 제어 회전 사용' 설정. (체크 박스 해제 시 캐릭터가 돌 때마다 시야가 같이 돌아감)

3. Jump까지 구현

1. 입력 액션 및 입력 매핑 컨텍스트 생성 및 설정.

ㅡ> 스페이스바 입력 시 점프 동작 하도록 구현. (Triggered에 연결 시 스페이스 홀딩 시 계속 점프)

TMI

내일은 오늘 배운 내용들을 바탕으로 장애물을 피해가며 목표 지점에 도달하는 게임인 플랫포머 게임을 간단하게 만들어 볼 것 같다. 지금 생각 중인 장애물들은 사라졌다 다시 생기는 장애물이나 옆에서 나와 사람을 아래로 낙하시키는 함정이 있다. 좌우나 상하로 이동하는 발판을 넣을 수도 있겠고 4차로에서 달려오는 차들을 피하도록 만드는 것도 재미있을 것 같다.