2421-12-19_TIL

별빛에소원을·2024년 12월 19일

TeamSparta-Unreal1기-TIL

목록 보기
12/90
post-thumbnail

레벨 디자인.

게임 내에서 플레이어가 경험할 수 있는 환경과 구졸르 만드는 과정. 플레이어의 경로, 도전, 그리고 스토리를 설계, 플레이의 재미와 균형을 조화롭게 담아야 한다. 레벨 디자인은 시각적 요소의 배치를 넘어, 경험의 핵심을 설계하는 역할.

💡 자동차를 예로 들면 프로그래머는 엔진을, 아티스트는 외관을, 레벨 디자이너는 드라이브의 경험을 제공한다


Lee Perry

플레이어 케릭터

플레이어 케릭터는 게임에서 사용자가 조종하는 핵심 오브젝트다.
캐릭터의 외형, 시점, 이동 및 점프와 같은 기본적인 동작을 구현한다. 언리얼 엔진의 블루프린트 시스템향상된 입력 시스템을 사용하여 코드작성 없이도 다양한 기능을 적용할 수 있다.

BluePrint Class

콘텐츠브라우저에서 BluePrints풀더를 생성 후 생성될 블루프린트들을 여기다가 만들어 주도록 하자.

마우스 우 클릭 > 블루 프린트 클래스 > 케릭터를 선택하여 생성



CharacterMesh

블루프린트 클래스를 더블 클릭해서 확인하면 캡슐만 나와있다.

캐릭터 블루프린트에는 기본적으로 캐릭터메시가 추가 되어 있다. 메시를 클릭하고 오른쪽 디테일 패널에서 SKM_Bot메시를 선택한다.


캐릭터 메시가 약간 공중에 떠있고 방향이 돌아가 있다. 메시를 월드 방향으로 회전, 위치는 중앙으로 이동시킨 뒤 캡슐의 크기도 조절하자.

Camera

스프링 암 컴포넌트와 카메라 컴포넌트를 추가한다.
이 때, 카메라 컴포넌트는 스프링 암 컴포넌트에 붙여줘야 한다.

Enhanced Input System - Move

향상된 입력시스템을 사용해 키보드, 마우스, 게임패드를 통한 입력 매핑 설정

만들어진 캐릭터가 움직이기 위해서는 입력을 받을 수 있어야 한다. 유저의 입력을 매핑할 수 있게 InputAction과, MappingContext를 생성한다.

블루프린트 풀더 내에 새로운 Inputs풀더를 생성한 뒤, 아래와 같은 네이밍으로 입력 매핑 컨텍스트, 입력액션을 생성한다. 키보드 이동에 사용될 Move와 마우스를 위해 사용할 Look을 만들어보자.

Look과 Move는 x,y축을 모두 이용하기에 IA_NBC_Look을 더블 클릭 후 설정값에 Axis2D를 선택한다. Move도 같은 값으로 세팅한다.

MappingContext는 아래와 같이 세팅한다.
입력 액션에서 입력 이벤트를 정의하고, 맵핑 컨텍스트에서 키를 액션에 맵핑해주는 개념이다.

각 키별 이동방향에 대한 모디파이어를 설정한다.
캐릭터는 기본적으로 월드방향인 X축 방향을 보고 있기때문에 전진하는 W 에는 모디파이어를 설정할 필요가 없다.
S는 뒤쪽으로 이동하기때문에 X축의 부정
D는 오른쪽으로 이동하기때문에 Y축 방향인 스위즐 입력 측 값
A는 왼쪽으로 이동하기떄문에 Y축 방향 스위즐 입력 측 값과 부정

  • w : 설정x
  • s : x축 부정
  • a : 스위줄 입력 축 부정
  • d : 스위줄 입력 축

블루프린트에서 아래와 같이 노드를 생성한다.
AddMappingContext의 Input MappingContext에는 위에서 생성한 IMC_NBC_DefaultMappingContext를 넣으면 된다.
이벤트가 시작되었을 때 'GetPlayerController'로 현재 플레이어의 컨트롤러에 연결된 인풋들을 찾아서 매핑 컨텍스트와 연동하는 이벤트다.
*하얀 배경의 코네트는'C'단축키로 생성가능

이벤트그래프에서 만든 Move를 검색 노드를 추가 후 노드의 ActionValue 오른쪽 클릭하고 '핀분할'을 클랙해서 x,y값을 각각 사용할 수 있도록 분할한다.


이동하는 로직은 아래와 같다.
IMA에서 설정 한거와 같이 X값으로는 앞,뒤 이동을하고 Y값은 좌우 이동을 한다. 이 때, 노드들은 ForwardVector와 RightVector다.

뷰포트로 돌아가 케릭터 선택 패널에는 Possess를 검색 후 Player0을 선택 후 플레이 버튼을 선택 플레이 버튼을 클릭해 캐릭터를 이동시킨다.

Look

시점이동은 다음과 같다. Move일 때 핀분할해서 X는 Yaw(좌우), Y는 Pitch(상하)에 연결한다. 이 때 사용할 노드는 'AddControllerYawInput'과 AddControllerPitchInput'이다.

캐릭터 블루프린트 디테일 패널에서 컨트롤러 검색 후 컨트롤러의 Pitch, Yaw 사용을 체크 후 플레이를 누르면 어색한게 있을 것이다.

우리가 생각하는 3인칭 케릭터의 이동에 조금더 가까워 졌다. 카메라의 Pitch가 반대인거 같아 IMC에서 마우스의 Y축을 반전시키자

Move2

기존의 생성된 이동의 경우 '월드'를 기준으로 캐릭터의 회전을 구현하는데 아래의 노드들은 현재 컨트롤러를 기준으로 구현한다. 다양한 형태로 구현 하고 기호or 기획에 따라 적용하자.

Jump


나만의 레벨디자인


나는 개구리 게임을 생각하며 레벨을 디자인하였다. 차량을 피하고 차량에 치이면 죽는거다

profile
취미로 게임하는사람

0개의 댓글