[언리얼엔진] 4일차
TIL
레벨 디자인 : 게임 내에서 플레이어가 경험할 수 있는 환경과 구조를 만드는 과정.
ㅡ> 레벨 디자인은 시각적 요소의 배치를 넘어, 플레이어 경험의 '핵심'을 설계하는 과정.
플레이어 캐릭터 : 게임에서 사용자가 조종하는 핵심 오브젝트.
ㅡ> 플레이어 캐릭터는 게임을 성립시키는 중심이다. Because, 사용자 경험을 전달하는 매개체!
1. 플레이어 캐릭터 생성 및 카메라 부착
- 블루프린트 클래스를 이용해 구현
- 캐릭터의 메시는 Online learning kit에 있는 캐릭터 블루프린트에 제공되는 캐릭터 메시 사용
- 메시를 처음 설치하면 캡슐에서 벗어나 있고 월드의 방향과는 다른 방향을 보고 있으니 수정!
- 게임을 플레이 하는 유저가 캐릭터를 볼 때, 3인칭에서 볼 수 있도록 스프링 암을 이용해 카메라 추가.
* 스프링 암의 주요 기능 4가지
- 카메라 거리 제어 : 카메라와 대상 사이의 기본 거리를 설정.
- 부드러운 추적 : 카메라 움직임에 반응하는 탄성(spring) 효과가 있어, 캐릭터가 빠르게 이동하거나 회전할 때 카메라가 부드럽게 따라오게 할 수 있음. (옵션을 통해 카메라의 위치와 회전이 지연되는 효과를 추가할 수도 있음)
- 충돌 감지 및 거리 조정 : 장애물 충돌 감지 및 충돌 발생 시 카메라와 캐릭터 간의 거리를 자동으로 줄여 카메라 시야를 가리지 않도록 조정.
- 회전 제어 : 카메라가 캐릭터를 중심으로 회전할 수 있도록 설정 가능. (옵션 설정에 따라 플레이어의 컨트롤 키 입력에 따라 카메라 회전 반영 가능)
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차로에서 달려오는 차들을 피하도록 만드는 것도 재미있을 것 같다.