DAY 4 플레이어 캐릭터와 나만의 레벨 디자인

칼든개구리·2024년 12월 19일
0

[언리얼TO리얼]

목록 보기
35/42
  1. 레벨 디자인이란?
    ❗게임 내에서 플레이어가 경험할 수 있는 환경과 구조를 만드는 과정입니다. 플레이어의 경로, 도전, 그리고 스토리를 설계하며, 게임플레이의 재미와 균형을 조화롭게 담아내야합니다.

    레벨 디자인은 시각적 요소의 배치를 넘어, 플레이어 경험의 핵심을 설계하는 역할입니다.

    💡오늘은 컨텐츠를 고민해보는 시간을 가져보겠다!


사용 에셋: OnlineLearning Kit, Lower Sector Building kit
먼저 두 가지 에셋을 추가해준 뒤 프로젝트 만들기를 눌러 프로젝트를 하나 만들어 준다. 그리고 Lower 에셋을 프로젝트에 5.4 버전으로 추가 해준다

플레이어 캐릭터

플레이어 캐릭터는 게임에서 사용자가 조종하는 핵심 오브젝트입니다. 블루프린트와 엔진 기능을 활용해 직접 캐릭터를 설정하며 게임 개발의 기초를 익혀봅시다!

캐릭터의 외형, 시점, 이동 및 점프와 같은 기본적인 동작을 구현하게 됩니다. 언리얼 엔진의 블루프린트 시스템향상된 입력 시스템을 사용하여 코드 작성 없이도 다양한 기능을 적용할 수 있습니다.


콘텐츠 폴더 안에 NBC-BluePrint 폴더를 만들고 캐릭터를 상속 받는 BP_NBC_Character을 하나 만들어 준다.


이후 캐릭터를 열고 메시를 선택해 스켈레탈 메시에 y_bot을 선택해 넣어준다

이후에 캡슐 컴포넌트에서 캡슐 절반 높이를 수정해주고 캐릭터 위치도 수정해서 아래와 같이 만들어 준다

컴포넌트에 스프링 암과 카메라를 세팅해준다. 중요한 점은 스프링 암 자식으로 카메라를 넣어주는 것이다


Enhanced Input System - Move


움직이기 위해 입력->입력 액션인 IA_NBC_Move와 IA_NBC_Look 두가지를 만들어 준다.
그리고 두개는 x,y 와 카메라 앞 뒤로 움직이기 위해 2D로 설정한다

그리고 만들어둔 입력 액션을 바탕으로 입력 액션 컨텍스트를 만들어준다.

언리얼 엔진에서 "스위즐 입력 축 값(Swizzle Input Axis Value)"은 보통 입력된 데이터의 축을 변환하거나 재구성하는 설정을 의미합니다. 이를 통해 특정 축의 데이터를 다른 축으로 매핑하거나, 특정 입력 값을 재구조화하여 사용자 정의 동작을 구현할 수 있습니다


움직이는 것을 처리하기 위해 블루프린트 노드를 사용해서 처리해준다.


LOOK 함수를 Yaw와 Pitch를 사용해서 처리 해준다


뭔가 이상하다 캐릭터랑 카메라랑 같이 움직이는 것을 볼 수 있다


해결해보자

캐릭터 전체와 연결되어 있는 2가지 옵션은 모두 해제한다


다음으로 캐릭터 무브먼트 컴포넌트의 '무브먼트 방향으로 회전 조정'을 체크해준다



스프링 암 컴포넌트의 ‘폰 제어 회전 사용’을 체크해줍니다.



카메라의 피치(상하)가 반대인 것 같아 마지막으로 IMC_NBC_DefaultMappingContext 에서 마우스의 Y축을 반전시켜주도록 한다.


Enhanced Input System - Move 2

기존에 위에서 생성한 이동의 경우 '월드'를 기준으로 캐릭터를 회전을 구현하는데 아래의 노드들은 현재 컨트롤러를 기존으로 구현을 하고 있다. 그래서 실행하면 빙글빙글 돈다.

업로드중..


📝TIL 레벨 디자인과 플레이어 캐릭터 설정

  1. 레벨 디자인이란?
    레벨 디자인은 플레이어가 경험할 환경과 구조를 설계하는 과정으로, 플레이어의 경로, 도전, 그리고 스토리를 설계하며 재미와 균형을 담아냅니다.
  • 핵심 개념: 플레이어의 경험 중심 설계

  1. 플레이어 캐릭터 설정
    플레이어 캐릭터는 게임에서 사용자가 조종하는 핵심 오브젝트로, 블루프린트와 엔진 기능을 활용해 직접 구현합니다.
  • 캐릭터 생성
    -BP_NBC_Character 블루프린트를 생성하고 기본 캐릭터 클래스를 상속받음.
  • 스켈레탈 메시 적용
    -캡슐 컴포넌트 크기 및 캐릭터 위치 조정.
  • 스프링 암 및 카메라 추가
    -스프링 암을 추가하고 자식으로 카메라를 설정.

  1. Enhanced Input System
    이동 (Move) 구현
    1. 입력 액션 생성
    - IA_NBC_Move 와 IA_NBC_Look 두 가지 입력 액션 생성
    - 축 데이터는 2D로 생성(X,Y)
    2. 입력 액션 컨텍스트 추가
    -입력 액션을 컨텍스트로 설정해 관리
  2. 블루프린트 동작 구현
    -IA_NBC_Move를 사용해 캐릭터 이동 구현
    -카메라와 연동된 IA_NBC_Look 사용해 시점 조작

⛔발생한 문제

  • 릭터와 카메라가 같이 움직이는 문제가 발생
  • Look 함수에서 Yaw와 Pitch 설정으로 시점을 처리했지만, 카메라 움직임이 자연스럽지 않음

문제 해결!
1. 옵션 해제: 카메라 전체에 연결된 두 가지 옵션 해제
2. 캐릭터 무브먼트 수정: 무브먼트 방향으로 회전 조정 활성화
3. 스프링 암 설정: 스프링 암 컴포넌트의 폰 제어 회전 사용 활성화
4. y축 반전: IMC 입력 매핑 컨텍스트에서 마우스 Y축 반전

추가 이동 방식: Enhanced Input System - Move 2

  • 기존 설정은 월드를 기준으로 캐릭터를 회전시켰으나, 컨트롤러를 기준으로 구현 시 캐릭터가 회전하는 문제가 발생
  • 컨트롤러 기준 이동과 회전을 블루프린트에서 별도로 설정해 해결 필요

느낀점: 원래 프로젝트 세팅의 INPUT을 사용해 C++에서 코드짜는 것만 했는데 이렇게 시스템을 만들어두니 블루프린트에서 플레이어의 이동과 시점 조절을 더 간단하게 할 수 있다를 알게 되었다.

profile
메타쏭이

0개의 댓글