
지오메트리 브러시 기존에 있는 레벨을 수정하며 만드는 것보단 처음부터 직접 만들어 보고자 우선 새 레벨을 만들어준다. 새 레벨을 만들고 레벨 블루 프린트를 생성했던 버튼 바로 좌측에 있는 버튼을 누르면 액터 배치 패널을 가져올 수 있다. 그러면 위와 같은 이미지가 뷰보트 좌측에 생기고 여기서 지오메트리를 선택한다. 바로 아래로 보면 다양한 블록들을 불러올 수 있는데, 해당 기능은 언리얼에 내장된 기능이며 지오메트리 브러시 (BSP) 라 부른다. 브러시는 만들어내면서 구성하거나 뺴면서 조각이 가능하다. 이번에는 큰 박스 브러시 내부에 기존 박스 브러시 보다 작은 박스 브러시를 이용해 내부를 빼서 공간을 만들 예정이다. 먼저 박스를 뷰포트에 생성하는데 우리는 이를 벽으로 사용할 것이므로 우측 아웃라이너 창에..

에셋 가져오기 이번에는 현재 에셋만으로는 월드가 다소 심심하므로 나무 상자와 배럴같은 외부 에셋을 가져와 월드에 추가해준다. 이는 에픽 게임즈 런처의 마켓플레이스에서 다운이 가능하다. 마켓 플레이스에는 다양한 유료/무료 에셋들이 존재한다. 이번 강의에서는 Industry Props Pack 6라는 무료 에셋을 다운받아 사용하였다. 해당 에셋을 다운받고 사진과 같이 라이브러리를 보면 다운받은 에셋이 존재한다. 아래 프로젝트에 추가 버튼을 눌러 원하는 프로젝트에 바로 추가가 가능하다. 추가를 해주고 다시 언리얼로 돌아오면 콘텐츠 브라우저에 에셋팩이 존재하는걸 바로 확인할 수 있다. 해당 에셋팩의 Maps에 있는 showcase를 통해 해당 에셋팩이 어떤 에셋들을 가지고 있는지 확인이 가능하다. 해당 show..

전방 벡터본질적으로 전방 벡터는 회전한 x 방향을 가진다.이는 회전한 다음에 전방을 가리키는 벡터라는 뜻이다. 전방 벡터는 항상 길이가 1이다.이러한 특징을 이용하여 어떠한 방향으로 어떤 크기의 충격을 적용하고 싶을 때 전방벡터를 원하는 값으로 곱하기면 하면 얻을 수 있다. 전방 벡터는 Actor에있는 기능인 Get Actor Forward Vector를 통해 얻을 수 있다.지금은 발사체에 대해 다루고 있으므로 발사체에서 연결해주면 된다.하지만 이를 단순히 바로 임펄스에 연결하면 아주 미약한 힘이 전달되는 것을 확인이 가능하다.이는 전방 벡터의 길이가 1인데, 언리얼의 기본 단위는 cm여서 초속 1cm가 적용된 것이기 때문이다.이를 위해 Mulitply를 이용하여 곱해줄 수 있다.처음 Multiply이를..

벡터의 덧셈과 곱셈 벡터는 본질적이로 수학의 개념이며 3D 공간에서 방향과 크기를 뜻한다. 프로그램으로는 지난 강의들의 노드를 봤듯이 float 타입의 x, y, z이다. 현재 위치를 기준으로 새로운 위치의 벡터를 얻고 싶을 떄는 간단하게 현재 위치 벡터 + 무브 벡터를 해주면 된다. 뺄셈또한 단순하다. 덧셈과 방향만 반대인 것을 볼 수 있다. 추가적으로 곱셈도 간단히 다뤘는데 현재 방향을 유지하며 크기를 반복해주면 된다. 좀 더 익숙해지기 위해 강의에서는 다음과 같은 간단한 벡터 덧셈, 뺄쎔, 곱셈 문제를 제시하였다. 시작점 (-5, -2) A = (7, -1) B = (0, 2) C = (-3, 2) 시작점에 A + 3*B - C만큼 이동한 값을 구하기 먼저 무브 벡터를 구해보면 (7+3*0-(-3)..

회전 다루기 현재 발사체는 회전이 적용되지 않고 무조건 일자로만 발사되는 것을 확인할 수 있다. 이번에는 이 회전을 적용시키는 것을 목표로 하며 회전의 확인을 용이하게 하기 위해서 발사체를 타원으로 만들어주었다. 이제 위와 같이 Get Actor Location을 통해 위치를 얻었듯이 Get Actor Rotation을 통해 회전을 얻어 연결해준다. 하지만 연결하고 실행해보면 회전이 적용되지 않은 것을 볼 수 있다. 플레이 화면에서 다시 F8을 누르고 폰을 보면 디테일 패널에서 회전 값 확인이 가능하다. 현재 위치에서 180도 회전하고 다시 회전값을 보면 회전이 전혀 반영되지 않은 것을 볼 수 있다. 이는 언리얼의 폰은 카메라 회전과 함께 회전하도록 적용이 되지 않았기 때문이다. 이 회전이 반영되는 것을..

폰 게임 플레이 중 F8을 누르면 몸에서 빠져나온 다음과 같은 구체를 확인이 가능하다. 해당 오브젝트는 폰이며 월드에서 플레이어의 물리적 묘사를 나타낸다. 폰은 게임 플레이 중에만 확인이 가능하고 게임 플레이를 중지하면 다시 사라진다. 언리얼은 기본적으로 씬 안에 폰을 스폰하고 Player Start라는 씬 안의 액터가 주어진 위치에 배치된다. 해당 액터가 폰을 스폰하며 폰이 스폰되는 위치이다. 스폰 위치에서 발사체를 발사하는 것을 목표로 하므로 이제 플레이어 폰의 위치를 노드를 통해 얻어야한다. Get Player Pawn을 통해 플레이어 폰의 획득이 가능하다. 해당 노드를 불러오면 왼쪽에 타입이 Integers인 Player Index를 볼 수 있다. 자세히 설명을 보면 "플레이어 컨트롤 목록의 인덱..

데이터 유형 데이터 유형란 컴퓨터 메모리의 특정한 이진법 데이터를 나타내는 한 방법이자 이데이터로 무엇을 할 수 있는지 제한하는 방법이다. 대표적 종류로 다음과 같은 것들이 있다. Integers - 정수 Floats - 부동 소수점 Strings - 텍스트 Bools - 참거짓 이러한 데이터들을 오브젝트로 그룹화하여 사용하게 된다. (ex : 나이 = Integers, 경험치 = Floats) 블루프린트에는 오브젝트와 유사한 것으로 구조체가 존재한다. 구조체는 오브젝트와 유사하지만 보통 상당히 작고 레퍼런스를 사용하지 않는다. 크기가 작기 때문에 바로 메모리로 전달하고 복사하는 것이 가능하다. 크기를 제외하면 구조체와 오브젝트는 다소 상호 교환이 가능하다. 우리가 앞서 접한 구조체의 종류로는 Vecto..

액터 스폰하기 직전에 만들었던 발사체는 기본적으로 처음부터 씬에 있는 것이 아니라 플레이하는 동안 스폰되는 것이 이상적이다. 이를 위해 레벨 블루 프린트에서 우클릭을 하고 Spawn을 검색해보면 위와 같이 Spawn Actor From Class를 찾을 수 있다. 가장 먼저 Class가 보이는데 발사체는 BP_Projectile의 이름을 가진 블루프린트 클래스이므로 해당 클래스를 선택해준다. 이러면 노드의 이름도 같이 클래스명을 따라 SpawnActor BP Projectie로 바뀐 것을 볼 수 있다. 그다음 Spawn Transform의 경우 스폰되는 위치를 의미하는 것이다. 위 이미지와 같이 기존 발사체의 트랜스폼을 보면 x=60, y=0, z=120의 위치를 가지는 것을 알 수 있다. 이와 같게 하..

블루프린트 클래스와 인스턴스 오브젝트 프로그래밍은 클래스와 인스턴스를 사용할 떄 진정한 활용도를 가진다. 따라서 이번 강의에서 블루프린트 클래스와 인스턴스에 대한 내용을 다룬다. 먼저 예시를 들면 다음과 같다. 모험가 데이터 : 경험치 500, 레벨 1 기능 : 점프, 화살비 스킬 -> 오브젝트를 만드는 원본 클래스 모험가 1 데이터 : 경험치 500, 레벨 1 -> 실제 오브젝트이자 인스턴스 모험가 2 데이터 : 경험치 200, 레벨 1 -> 마찬가지로 인스턴스 모험가 1과 2의 데이터가 다르지만 기능은 같음 -> 서로 다른 오브젝트 간의 기능 공유 해당 강의에서는 앞으로 강의에 이어서 필요한 발사체 생성하고 이를 토대로 클래스를 생성하였다. 씬에 있는 스피어는 단일 오브젝트에서만 활용된다. 이를 여러..

임펄스 이번 강의에서는 큐브에 임펄스(충격)를 가해 움직이는 것을 목표로 한다. 우선 임펄스를 적용시킬 방법으로 Space Bar를 사용하였다. 해당 노드는 이벤트 노드로 실제 키보드의 Space Bar를 누를때 실행된다. 테스트로 Print String을 연결하여 기존의 질량 출력을 Space Bar를 눌렀을 때 계속하여 출력되는 것을 확인했다. 간단히 테스트를 맞췄으니 이제 임펄스 노드를 추가할 차례이다. Get Mass와 변환 노드를 지우고 Static Mesh Component에서 새롭게 끌어서 노드를 찾아준다. 이때 우측에 컨텍스트에 따라 라는 문구를 볼 수 있는데 이를 활성화하면 Static Mesh Component를 사용할 수 있는 노드만 필터링이 가능하다. Add Impulse를 통해 임..

오브젝트 본질적으로 무언가를 대표하는 것이며 데이터와 기능의 집합이다. 예를 들어서 월드에서 모험가는 오브젝트이다. 모험가는 경험치, 레벨 등 데이터가 존재하며 모험가 고유 스킬, 점프 등 기능이 존재한다. 또다른 예시로 리스트 또한 추상적이나 오브젝트이다. 아이템 1, 2, 3, 4 등 데이터가 존재하며 아이템 삭제 및 추가 등 기능이 존재한다. 여기서 기능은 앞서 이벤트그래프에서 봤듯이 노드 형태로 존재한다는 것을 알수 있다. 오브젝터의 종류로 다음과 같은 내용이 있다. 액터 - 레벨에 투입할 수 있는 오브젝트 - 예시로 큐브를 레벨에 투입할 수 있고, 우측 디테일 탭을 보면 수많은 데이터가 존재 컴포넌트 - 액터 자체에 들어갈 수있는 오브젝트 - 우측 디에틸 패널에 액터 아래에 StaticMeshC..

피직스 시뮬레이션 우측 디테일 패널을 보면 피직스라고 적힌 것을 확인할 수 있다. 기본적으로 피직스 시뮬레이션은 비활성화 되어있으며 체크박스에 체크를 해주면 활성화가 가능하다. 활성화를 해주기 전에는 공중에 떠있는 의자를 플레이해도 공중에 그대로 있지만, 활성화 이후에는 공중에서 떨어지는 것을 확인할 수 있다. 이어서 아래 중력 활성화 칸을 볼 수 있으며 기본적으로 활성화가 되어있다. 체크박스를 풀어주면 무중력 상태가 되어 해당 사물이 둥둥 떠다니는 것을 확인이 가능하다. 중력 활성화 위를 보면 질량 칸이 존재한다. 기본적으로 사물의 질량이 기본값으로 알아서 저장되어 있지만 이를 체크하여 임의적으로 바꾸는 것이 가능하다. 이를 활용하여 특정 사물을 훨씬 가볍게 만드거나, 훨씬 무겁게 만드는 것이 가능하다.

이벤트 그래프 위 이미지는 영상 내용이 진행됨에 따라 이벤트 그래프에 노드가 추가된 것이다. 먼저 Print string은 말그대로 문자열 string을 출력하기 위한 노드이다. 안에 있는 in string 칸을 통해 출력하고자 하는 문자열의 내용을 입력이 가능하다. 그리고 좌우측으로 세모난 핀이 존재하는데 좌측이 입력핀, 우측이 출력핀이다. 다음으로 좌측에 있는 노드는 Event 노드이다. 해당 Event 노드의 이름은 Beginplay이므로 플레이 버튼을 눌렀을 때 실행되는 노드를 의미하게 된다. 따라서 위 상태에서 플레이를 누르면 다음과 같은 화면을 확인할 수 있다. 플레이 화면 좌측 상단을 보면 앞서 in string에 입력했던 문자열이 출력되는 것을 확인할 수 있다. 강의 주어진 미니과제에 따라..

해당 게시글은 Udemy 사이트에 존재하는 언리얼 5와 관련된 강의 영상에 대한 내용을 정리하는 것을 목표한다. 원 강의 제목은 【한글자막】 Unreal Engine 5 C++ 개발자: C++ 학습하고 비디오 게임 제작하기 이다. Section 1은 언리얼에 대한 간단한 소개와 설치에 관한 내용이므로 생략하고 Section 2부터 작성하였다. 이번 Seciton의 목표는 피직스를 기반으로 한 게임으로, 제한된 수를 가진 발사체로 가능한 많은 것을 파괴하며 게임이 끝나면 레벨을 다시 시작하는 것이다. 이를 위해서 피직스 다루는 법, 발사체 스폰, 발사체 조준, 레벨 제작, 탄약 제한 등에 배우게 된다. 프로젝트 생성 강의의 첫 시작이나 다름 없는 프로젝트 생성 관련 내용이다. 영상에서와 다르게 나는 언리얼..