블록 게임 만들기 1

정선호·2023년 6월 4일
0

Unreal Study

목록 보기
10/13

1. Building the Base Block

강의 영상

기본적인 환경을 세팅하고 기초 블록 블루프린트를 만든다.

Directional Light 각도 조정

  • Ctrl + L버튼을 누른 후 Ctrl버튼을 유지한 채로 마우스를 드래그해 디렉셔널 라이트의 각도를 조정할 수 있다.

Base Block 구현

모든 블록의 원형이 되는 베이스 블록
블록을 추가할 때 위치를 맞춰주는 Get Attatch Location함수를 내부에 구현해 놓는다

베이스 블록 컴포넌트

  • BlockMesh : 블록 스태틱 메시
    박스 자체의 콜리전이 적용되지 않게 하기 위해 콜리전 프리셋을 NoCollision으로 설정
  • BoxCollision : 블록에 적용되는 콜리전
    콜리전 프리셋을 BlockAllDynamics로 변경

Get Attatch Location 함수

  1. 내 블루프린트 - 함수+버튼을 눌러 새 함수 생성
  2. 디테일에서 입력값(ClickLocation, Normal)과 출력값(AttachLocation) 선언
  3. 블록 위치에 노멀 벡터(정규화된 방향 벡터)를 더한 후 블록의 크기에 그리드화 해주기

2. Constructing the Floor Block

강의 영상

기본 블록을 상속받는 바닥 블록을 구현한다.
블루프린트 생성자 그래프와 스태틱 메시 인스턴스 컴포넌트를 이용하게 된다.

바닥 블록

베이스 블록 블루프린트를 우클릭해 자손 블루프린트 클래스 생성 선택
뷰포트 내에서 생성자는 첫 설치 시 한 번만 실행하도록 하게 하기 위해 클래스 세팅 - 블루프린트 옵션 - 드래그 시 컨스트럭션 스크립트 실행을 비활성화한다

바닥 블록 컴포넌트

  • InstancedBlockMesh : 스태틱 메시의 복제품들을 효과적으로 생성하게 해주는 Instanced Static Mesh Component
  • 새로 추가된 변수로는 각각 X, Y쪽 크기를 담당하는 FloorSizeX, FloorSizeY가 있다.

컨스트럭션 스크립트

  1. Grid로 자리잡기
  • 생성 시 그리드를 이용해 위치를 잡는다
  1. Instanced Static Mesh Component에 메시 추가하기
  • 블록 메시를 Instanced Static Mesh Componenet에 세팅해놓고 블록 메시를 삭제한다
  1. 인스턴스 컴포넌트로 블록 여러 개 생성하기
  • 이중 For Loop를 이용해 Instanced Block Mesh의 내장 함수인 Add Instance명령을 불러 원하는 개수의 블록 스태틱 메시들을 생성한다.
  1. 콜리전 크기 조정하기
  • 콜리전 크기가 만들어진 바닥 블록의 크기와 동일하게 설정해준다

3. Adding the PlayerCharacter, Crosshair, and GameMode

강의 영상

화면에 십자 표시를 해주는 HUD를 구현한다
플레이어 입력을 추가하고, 플레이어 캐릭터를 구현한 후 입력에 대응하는 블루프린트 코드를 작성한다
마지막으로 게임에 직접 만든 플레이어를 적용한다

십자 표시 HUD 블루프린트

Recieve Draw HUD Event이벤트 노드로 시작해 Draw Texture명령을 실행해 화면에 크로스헤어를 띄운다

플레이어 블루프린트

콘텐츠 브라우저에 캐릭터 블루프린트를 생성한다.

블루프린트 컴포넌트

  1. CharacterMesh0 컴포넌트에 원하는 캐릭터의 스켈레탈 메시를 추가한다
  2. SpringArmCamera 컴포넌트를 붙여 3인칭 카메라를 만들어준다.
    • 카메라 회전에 맞춰 플레이어도 회전시키고 싶으면 SpringArm컴포넌트에서 카메라 세팅 - 폰 제어 회전 사용을 체크한다
  3. 컴포넌트 디테일 값을 변경한다.
    • BP_BlockPlayer
      • 플레이어를 날수 있게 하려면 내비 무브먼트 - 무브먼트 기능 - 날기를 체크한다
      • 계단을 올라갈 수 있게 하기 위해 캐릭터 무브번트:걷기 - 걸을 수 있는 바닥 각도를 46도로 설정한다
      • 카메라 회전에 따라 이동시키게 하기 위해 폰 - 컨트롤러 회전 요 사용을 체크 해제한다
    • CharMoveComp
      • 캐릭터 무브먼트(회전 세팅) - 무브먼트 방향으로 회전을 체크해 캐릭터가 가속되는 방향으로 회전하게 한다

프로젝트 세팅 - 입력 추가

메뉴바에서 편집 - 프로젝트 세팅 - 엔진 - 입력으로 들어가 원하는 입력과 키를 바인딩시킬 수 있다.

이벤트그래프

플레이어 이동과 십자표에 대한 값을 변수로 저장하는 명령들을 구현한다

  1. Jump & Turn

  2. Move

  3. Get Crosshair
    BeginPlay 시 HUD의 십자키를 가져오는 명령

게임 모드 블루프린트

전체적인 게임 모드를 관장하는 블루프린트로 블루프린트 - 게임 모드 베이스로 추가할 수 있다.
컴포넌트의 디테일에서 디폴트 폰 클래스, HUD클래스를 직접 구현한 클래스들로 바꿔준다.

profile
학습한 내용을 빠르게 다시 찾기 위한 저장소

0개의 댓글