Unreal Engine/GCC Class (5.5.4)

Unreal Engine 5 배워보기 - 3일차

보별 2025. 3. 19. 17:51

컴퓨터 및 게임 관련 전공인이 아닌 문외한 일반인이 언리얼 엔진을 배우면서 정리한 내용입니다.

그날그날 배웠던 내용을 제가 나중에 보기 위해 정리한 것으로, 지금 당장 보기에 부족한 점이 아주아주 많고 추후에 수정이 될 수도 있습니다.

오탈자 및 잘못 기재된 내용 지적, 부족한 내용 설명은 언제든지 환영입니다.

 

본글은 언리얼 엔진 5.5.4 버전 영문판을 기준으로 합니다.

----------------------------------------------------------------------------------------------------------------

 

3일차 학습 내용

- Unreal Engine 화면 및 메뉴 설명 그리고 조작

- Blueprint

   Set Text

   Collision BP ( On Component Begin OverlapOn Component End Overlap)

   Function생성

   Event Begin Play

   Event Tick

   Time BP

   (Delay / Set Global Time Delation / UTC Now / Add Timeline / Timer by Event)

- 간단한 미로 게임 제작

 

 

Unreal Engine 화면 및 메뉴 설명 그리고 조작

언리얼 엔진 프로젝트 실행은 두가지 방법으로 가능하다.

1일차에 나온 에픽 게임즈 런처를 통해 실행할 수 있고, 프로젝트를 저장한 폴더 내 언리얼 엔진 파일을 통해서도 실행이 가능하다.

프로젝트 폴더 내에 존재하는 것들 중에서 "config 폴더", "content 폴더" , "언리얼 엔진 실행파일" 은 반드시 있어야 실행이 가능하다.

즉, 프로젝트를 진행 중인 PC가 아닌 다른 PC에서 실행하고 싶을 시  "config 폴더", "content 폴더" , "언리얼 엔진 실행파일" 3가지 파일만 옮기면 된다.

그 외 파일들은 프로젝트를 실행하면 재생성된다.

1일차에 배웠던 언리얼 엔진 기본적인 조작법 외에 추가로 배운 내용이 있다.

시점 조작 시 마우스 우클릭을 한 채로 wasd로 이동하는 방법을 주로 사용하는데, 텐키 패드의 숫자로는 마우스 우클릭 누르지 않고 시점이동 가능하다.

8, 4, 2, 6은 각각 wasd에 상응하고, 7, 9는 각각 q, e에 상응하며, 1, 3은 줌인, 줌아웃 (마우스 휠 드래그)에 해당한다. 

"ctrl + 1~9"로 각각 숫자에 특정 시점의 위치를 북마크로 지정할 수 있다.

북마크 지정 후에는 저장할 때 눌렀던 숫자만 누르면, 해당 숫자를 눌렀을 때 저장한 위치의 시점으로 바로 이동이 가능하다.

좌측 상단의 세줄 표시의 메뉴를 누르면 아래쪽에 "high resolution screenshot" 버튼이 있는데 해당 버튼을 누르거나, F9 버튼을 누름으로써 현재 작업 중인 창의 스크린샷을 찍을 수 있다.

스크린샷은 Appdata에 있는 언리얼 엔진 폴더에 저장된다.

좌측 상단의 세줄 표시의 메뉴 바로 옆에는 "perspective" 탭이 있는데, 해당 탭에서는 맵을 보는 시점을 변경할 수 있다.

"perspective" 를 클릭하면 위 사진과 같은 일반적인 화면이 나온다.

탭의 "orthographic" 쪽에 있는 메뉴들을 눌러보면 각각 영문으로 표시된 시점에서 위 사진과 같은 투과도를 보여준다.

해당 모드에서는 마우스 휠을 드래그하여 액터의 길이를 잴 수 있고, 길이의 단위는 'cm' 이다.

그리고 시점 전환 또한 단축키가 존재하는데, ctrl을 누른 채로 마우스 휠을 특정 방향으로 드래그하여 시점 변환이 가능하다.

5 또는 7시로 드래그하면 perspective 시점,  12시는 top, 6시는 bottom, 1시는 left, 11시는 right, 3시는 front, 9시는 back 방향의 시점으로 전환시켜준다.

"perspective" 탭의 바로 옆에는 "lit" 탭이 있는데, 여기서 "lit" 는 "light" 를 의미한다.

'lit' 은 레벨 상에 빛이 존재하는 상태를 보여주고, 'unlit' 은 빛이 존재하지 않는 상태, 'wireframe' 은 위 그림처럼 해당 레벨의 메시를 보여준다.

액터의 이동, 회전, 스케일 조절을 wer 말고도 스페이스로도 변경이 가능하다.

스페이스를 누르게 되면 이동, 회전, 스케일 순서대로 반복되며 변환된다.

위 사진처럼 가운데 쪽을 보면 기호와 숫자를 볼 수 있다.

각각 격자 이동 간격이 10, 회전 조절각이 10, 스케일 조절 간격 0.25, 시점 카메라 이동속도가 0.6임을 나타낸다.

위 수치들은 자기 취향에 맞게 편집이 가능하다.

액터를 복사하고 싶을 경우 alt를 누른채로 드래그하거나, ctrl + c,v를 통해 복사할 수 있다.

엔진의 우측을 보면 outliner 탭이 있는데, 해당 탭은 레벨 내에 배치된 모든 액터를 확인하고 및 관리할 수 있는 탭이다.

특정 액터 클릭하고 'ctrl + b' 를 누르면 액터의 경로를 확인 가능하다.

*개인 프로젝트나 팀 프로젝트를 진행하다보면 외부 에셋 파일을 컨텐츠 폴더로 집어넣는 경우가 있는데, 그렇게 하면 오류가 날 확률이 높으므로 외부 에셋을 갖다쓸 경우 주의

 

Blueprint

"Blueprint" (이하 BP로 줄여서 표현)는 "C++" 과 같은 코딩 언어이자 스크립트로 눈에 잘 보이는 직관성이 있어서 "비주얼 스크립트"라고 불린다.

"BP" 에는 다양한 종류의 스크립트가 있는데 하나씩 직접 만들고 확인해보고자한다.

"Content" 폴더 하위 폴더로 "00_Work" 폴더를 생성하고, 그 하위 폴더로 "01_Blueprint" 폴더를 생성한다.

그리고 해당 폴더에 "Lv_Blueprint" 라는 새로운 레벨 생성한다.

"01_Blueprint" 폴더 빈 곳을 우클릭 하여 새로운 BP Class를 생성하면 위와 같은 창이 뜬다.

일단은 'actor'를 선택하여 거기에 BP를 넣어보도록 하겠다.

생성할 BP 이름은 "BP_Camp" 이다.

이름이 들어가서 모자이크

위 사진은 BP를 더블클릭하면 뜨는 창이다.

화면 중앙 위쪽을 보면 3가지의 탭이 있는 걸 확인할 수 있다.

"Viewport" 탭에서는 컴포넌트를 추가해서 액터 등을 제작 및 관리하는 곳이고, "Construction Script" 탭에서는 게임이 플레이 되지 않은 상태에서 실행되는 스크립트를 관리하는 곳, "Event Graph" 탭에서는 게임이 플레이 중인 상태에서 실행되는 스크립트를 관리하는 곳이다.

"Viewport" 탭을 들어간 다음 좌측 상단의 "Add" 를 누르고 거기서 실린더, 큐브, 텍스트 렌더를 생성하여 위와 같은 모양을 만들어, 각각 BP에 대한 설명을 집어넣고 해당 액터 앞에서 BP의 효과를 체험할 수 있어서 직관적이다.

액터의 스케일은 x, y, z 각각 2, 2, 0.02 이렇게 설정하면 위와 비슷한 액터를 제작할 수 있다.

액터 제작 시 유의할 점은 위 사진처럼 하나의 액터가 다른 액터의 하위로 들어가면 안된다.

반드시 동일 레벨 수준의 액터를 생성해야한다.

하위 액터로 들어갔을 경우, 위쪽으로 드래그하여 빼낼 수 있다.

*스케일 옆의 자물쇠를 잠그면 원본 비율을 유지하면서 크기 조정할 수 있음

*x, y, z축 기준 회전에 따른 명명: roll, pitch, yaw

*블루 프린트 삽입된 액터 ctrl + e: bp 창 오픈

 

Set Text

"set text" 는 어제 배운 set 값과 비슷하게, text를 set하는 것이다.

해당 BP는 "Construction Script" 탭에서 작성한다.

자료형을 'Text' 로 한 뒤, 텍스트 변수에 임의의 텍스트를 삽입한다. 

해당 변수의 get 노드를 생성하고, set text 노드를 생성한 뒤에 위 사진처럼 연결해준다.

그리고 반드시 변수 탭의 해당 텍스트 변수의 눈 모양을 켜줘야 레벨에서 텍스트 수정이 가능하다.

*f2로 변수 이름 변경 가능

레벨로 돌아가 텍스트 수정을 할 수 있는데, 텍스트 수정은 텍스트 렌더 창이 아닌 BP 'Default'의 'My Text'에서 수정해야만 수정이 되는 것에 유의한다. 

작업 후에는 'ctrl + s' 로 자주 저장해주는 것이 좋은데, 'ctrl + s' 는 지금 열린 창만 저장하므로, "Content Drawer" 의 위쪽 부분의 "Save All" 눌러 전체 프로젝트를 한 번씩 저장해주는 것이 좋다.

*"Play" 아이콘 (녹색 재생 표시) 옆 점3개를 클릭하여 "Current Camera Location" 에 체크하면, 'alt + p' 로 게임 실행 시 카메라 위치에서 플레이어 소환 가능

 

Collision BP

이번엔 "BP_Base" 라는 이름의 새 BP 클래스를 생성해서 충돌 관련 BP를 짜보도록 하겠다.

 

BP를 생성한 뒤 왼쪽 상단의 "Component" 에서 "Add" 를 누른 뒤 "Sphere collision" 를 추가한다.

구형 모양의 액터를 생성하여 해당 구역과 충돌하면 이벤트를 발생 시키는 BP이다.

 

구의 크기는 오른쪽 "details" 탭의 "Shape" 에서 "Sphere Radius" 를 통해 간단히 스케일 조정이 가능하다.

노드 별 역할 설명 참고

이번 BP는 "Event Graph" 탭에서 작성한다.

게임이 실행돼야 플레이어를 움직여 이벤트를 발생시킬 수 있기 때문이다.

 

"Component" 의 "Sphere" 를 우클릭하고 "Add Event" 탭에서 "On Component Begin Overlap" 을 선택하여 새로운 노드를 생성한다.

"Cast To Character" 노드와 "Print String" 노드를 생성한 뒤, "Print String" 노드에 원하는 텍스트를 입력한다.

그리고 "Overlap" 노드의 'Other Actor' 를 "Cast To Character" 노드의 'Object' 와 연결하고, "Cast To Character" 노드와 "Print String" 노드를 연결하면 된다.

해당 BP는 캐릭터가 지정한 스피어에 충돌 시 발생하는 이벤트이다.

 

이와 반대로 "On Component End Overlap" 노드는 캐릭터가 해당 충돌 스피어에서 벗어날 시 발생하는 이벤트이다.

설정법은 "On Component Begin Overlap" 과 똑같다.

 

*노드 우클릭 한 뒤 아래쪽 코멘트에 설명 기입이 가능

*노드 전체 드래그 c: 노드 전체를 총괄하는 코멘트 추가 가능

 

이번엔 boolean 변수를 통한 텍스트 출력을 해보겠다.

일단 "isCheck" 라는 이름의 boolean 변수를 하나 생성하고, 해당 boolean 변수의 눈 모양을 켜주도록 한다.

해당 변수의 get 노드를 생성하고 핀을 드래그 하면 명령줄이 뜨는데, 명령줄에 'if' 입력 시 "Branch" 노드가 생성된다.

"Print String" 노드 2개를 생성하고 각각 원하는 텍스트를 입력한 뒤, "Branch" 노드의 'True', 'False' 와 연결시켜주면 된다.

이렇게 되면 레벨 내 액터에서 설정한 True, False에 따라 해당하는 "Print String" 의 메세지가 출력된다.

 

레벨로 돌아가서 레벨에 있는 충돌 관련 액터의 "details" 탭에서 "default" 의 "isCheck" 변수 체크 여부에 True, False를 설정할 수있다.

변수를 체크하면 True, 미체크하면 False로 설정되고, 해당 스피어에 충돌 이벤트가 발생 시 각각 설정한 값에 따른 메세지가 출력된다.

 

Function생성

 

좌측의 'Functions'에서 '+'를 누르면 새로운 Function을 생성가능하다.

Function을 생성하고 더블 클릭을 하면 위 사진처럼 위쪽에 새 탭이 생기는데, 거기에 제작한 노드 전체를 복사, 붙여넣기 해서 블루 프린트 축약 가능하다.

위 사진과 같은 BP로 새 Function을 만들었을 경우, 위와 동일한 BP가 필요할 때 저 Function 노드를 갖다 쓰면 된다.

 

add custom event (함수와 비슷한 역할; 함수에서는 시간 관련 이벤트 삽입이 불가능)

중복해서 긴 노드를 삽입하고 싶을 때 축약용으로 사용할 수 있는 노드

component 창에서 변수처럼 꺼낼 수 있음

 

Event Begin Play

 

"Event Begin Play" BP는 게임 시작 시 맨처음 한 번만 출력되는 텍스트를 생성하도록 도와준다.

 

BP에서 "Event Begin Play" 를 검색하여 노드를 생성한 뒤, 뒤에 "Print String" 노드를 만들고 연결한다.

"Print String" 노드를 클릭하면 위 사진처럼 창이 길어지며 아래에 옵션들이 뜬다.

옵션들 중 "Print to Screen" 과 "Print to Log" 둘 다 체크해주고, 텍스트 색상을 변경할 수 있고, "Duration" 으로 텍스트의 지속시간을 변경할 수 있다.

 

위 사진과 같이 메세지가 2번 출력되는 이유는 해당 노드가 적용된 BP 액터가 레벨 상에 2개 존재하기 때문이다.

 

Event Tick

 

"Event Tick" BP는 매 tick마다 텍스트를 출력하도록 도와준다.

'Delta Seconds' 실행 후 다음 실행까지의 시간 표시하는데, 이걸 1Tick이라고 한다.

즉, 1Tick은 1프레임을 표현하는데 걸리는 시간이다.

해당 컴퓨터에서 60FPS가 나온다면 1/6sec가 1Tick이 된다.

 

일단 "isTick" 이라는 이름의 boolean 변수를 생성하고, 해당 boolean 변수의 눈 모양을 켜주도록 한다.

BP에서 "Event Tick" 를 검색하여 노드를 생성한 뒤, "Branch" 노드와 "Print String" 노드를 만들고 셋을 나란히 연결한다.위 사진처럼 "isTick" 의 get 노드를 "Branch" 노드의 'Condition' 에 연결하고, "Event Tick" 노드의 'Delta Seconds' 출력핀을 "Print String" 노드의 'In String' 에 연결한다.

그리고 레벨에 있는 충돌 관련 액터 "details" 탭에서 "default" 의 "isTick" 변수를 체크해주면 된다.

 

Time BP

이번엔 "BP_Time" 이라는 이름의 새 BP 클래스를 생성해서 시간 관련 BP를 짜보도록 하겠다.

이번 BP 또한 "Event Graph" 탭에서 작성한다.

플레이어가 충돌 스피어와 충돌된 후에 일어날 시간 관련 BP이기에 게임이 실행돼야하기 때문이다.

 

Delay

"Delay" 노드는 지정된 시간 이후에 특정 이벤트가 발생하도록 하는 것이다.

 

충돌이 필요하기에 "On Component Begin Overlap" 노드가 필요하고, 그에 따라 캐릭터 확인 절차인 "Cast To Character" 노드도 자동으로 필요하게 된다.

둘의 노드들을 위에서 했던 충돌 BP 때처럼 이어주고, 이번엔 뒤에 "Delay" 노드와 "Print String" 노드를 추가해서 연결해준다.

"Delay" 노드는 지정된 시간 이후에 특정 이벤트가 발생하도록 하는 것이다.

즉, 위의 BP는 캐릭터가 스피어에 충돌 후 1초 뒤에 "Print String" 노드의 메세지를 출력하는 것이다.

 

BP 생성 후, 레벨로 돌아가 해당 액터의 변수를 항상 지정해주는 것을 잊지 않도록 한다.

이번엔 "Delay"로 지정해준다.

 

매번 캐릭터 충돌 코드를 짜주기에는 귀찮으니 변수를 하나 추가한다.

 

레벨로 돌아가서 새로운 BP 클래스를 생성하듯이 우클릭을 하면 아래쪽에 "Enumerator" 라는게 있다.

"E_Time" 이라는 이름으로 하나의 "Enumerator" 를 생성해준다.

 

생성된 "E_Time" 을 더블클릭하면 탭이 하나 새로 뜨는데, 해당 탭에서 enumerator 8개를 생성해주고, 각각 Delay / Timeline / TimerByEvent / Date / Delta / Lerp / Interp to / SetGlobalTimeDelation 이라고 기입해준다.

 

다시 "Event Graph" 탭으로 돌아와서 새 변수를 생성해준다.

변수 이름은 "E_Time" 이라고 하고, 자료형은 자료형 탭에 "E Time" 을 검색하여 "E Time" 그대로 적용해준다.

위에서 제작한 Enumerator를 불러온 것인데, 언더바는 표시가 안되는게 맞다.

"E_Time" get 노드를 생성하고 해당 변수의 눈 모양을 켜준 뒤, "On Component Begin Overlap" 노드와 "Cast To Character" 노드를 복사해서 가져온다.

"E_Time" 노드에서 핀 드래그하여 명령줄에 switch를 검색하여 "Switch on E_Time" 노드를 생성한다.

"Switch on E_Time" 노드 아래쪽 화살표를 클릭하면 노드가 길어지면서 아까 Enumerator에서 입력한 것들이 그대로 나열된다.

 

첫번째 Delay 위에서 한 Delay와 같은 방식으로 적용하면 된다.

 

Set Global Time Delation

"Set Global Time Delation" 은 게임의 배속을 조절해주는 BP이다.

 

"Switch on E_Time"에서 "Set Global Time Delation" 의 연결선을 빼와 "Set Global Time Delation" 노드를 검색하여 만들어준다.

"Time Delation" 이 배속 조절인데, 0.2로 설정하면 게임의 속도가 0.2배가 된다.

즉, 현실 1초가 게임에선 5초로 늘어나는 것이다.

그리고 "Delay" 노드와 "Set Global Time Delation" 을 추가로 만들어주고 이어준다.

이렇게 BP를 짜게 되면 충돌 후 0.2 배속으로 현실 1초 간 유지되고 다시 원래 속도로 돌아오게 된다.

BP 생성 후, 레벨로 돌아가 해당 액터의 변수를 "Set Global Time Delation" 로 지정해준다.

 

*노드 간 연결된 흰색 선 더블 클릭하면 위 사진에서 보이는 흰점이 하나 생성되는데, 노드 관리에 용이하게 도와줌

 

UTC Now

"UTC Now" 노드는 현재 UTC 기준 시각을 표시해주는 노드이다.

 

빈공간을 우클릭하여 "UTC Now" 노드와 string 탭의 "Append" 노드를 생성해준다.

자신이 시간뿐만이 아닌 날짜까지 표현하고 싶을 경우 "UTC Now" 노드에서 'Add pin' 으로 입력값을 추가할 수 있다.

날짜뿐만이 아닌 시간과 분 사이의 ':' 이나 연도 와 월, 일 사이에 '/' 를 넣을 때에도 'Add pin' 으로 추가하면 된다.

UTC 기준 시간이기에 우리나라 시간을 표시하려면 "Add" 노드를 통해 시간에 9를 더해주면 된다.

위 사진처럼 "E_Time" 의 "Date" 를 "Print String" 노드와 연결해주고, "UTC Now" 노드, "Append" 노드, "Print String" 노드의 "In String" 을 연결해준 뒤, 레벨에서 액터에 연결된 변수를 "Date" 로 설정해주면, 충돌 시 현재 우리나라 시간이 표시된다.

 

Add Timeline

"Add Timeline" 노드는 정해진 시간동안 시간이 지남에 따라 변화를 줄 수 있는 노드이다.

 

우선은 시간에 따른 텍스트의 크기 변화를 줘보도록 하겠다.

 

일단 변화를 줄 텍스트 창을 만들기 위해 새로운 텍스트 렌더를 생성한다.

눈에 잘 들어오는 위치로 맞추기 위해 z축 위치 값을 100으로 하고, 가운데 정렬하여 임의의 텍스트를 입력한다.

빈 곳을 우클릭 하여 "Add Timeline" 노드를 생성하고 노드 이름을 "TL_Move" 로 변경시켜준 뒤, 일단 "Switch on E_Time" 노드의 'Timeline' 과 "TL_Move" 노드의 'Play' 를 연결해둔다.

 

참고로 "TL_Move" 노드에 있는 연결핀은 각각 다르게 작동한다.

 

Play: 맨처음부터 한 번만 재생

Play from Start: 충돌 스피어에 들어갈 때마다 처음부터 다시 재생

Stop: 타임라인 재생 도중에 멈춤

Reverse: 진행 도중부터 역재생

Reverse from End: 맨끝부분부터 역재생

 

"TL_Move" 노드를 더블클릭하면 아무것도 없는 새로운 탭이 열리고, "+Track" 을 누르면 위 사진과 같이 여러가지 값을 변화 시킬 수 있는 타임라인을 생성할 수 있다.

텍스트의 크기와 관련된 타임라인은 "Float Track" 이므로 해당 Track을 선택하여 타임라인을 생성해준다.

 

타임라인을 생성하고 타임라인 위 임의의 곳을 우클릭하면 "Add key to" 를 통해 "Key" 를 추가할 수 있고, 생성된 "Key" 를 클릭하면 시간과 Value 값(텍스트 크기)을 조정할 수 있다.

 

"Key" 를 추가하고 보면 영상 편집 프로그램의 키프레임 그래프와 비슷하게 보이게 된다.

위의 타임라인은 텍스트의 크기와 관련된 타임라인이다.

위의 타임라인을 해석하면 "시작 시 크기 0의 문자가 1초 뒤에는 서서히 200의 크기까지 커진다." 는 의미이다.

 

위 과정을 거치면  "TL_Move" 노드에 Value 값과 관련된 타임라인 출력핀이 생성되고, 이 핀을 "Set World Size" 노드를 생성한 뒤에 위의 BP 사진과 같이 연결해주면 된다.

 

위의 BP와 타임라인 대로 적용하게 되면 타임라인의 해석 대로 실행되는데, 충돌 스피어에 지속적으로 충돌하게 되면 텍스트 크기가 커지다가 텍스트가 사라지고 다시 커지고를 반복하게 되어 재충돌할 때 조금 어색하게 보이게 된다.

이를 좀 더 자연스럽게 만들어주기 위해, 충돌 스피어에서 벗어나면 크기가 다시 줄어들게 되도록 시키는 역재생 노드를 추가해주도록 하겠다.

 

위 사진과 같이 "On Component End Overlap" 노드를 이용하여 충돌 스피어에서 벗어나는 BP를 만들어주고, "Add Custom Event" 노드를 생성하여 "EXE_TL" 이라고 명명하는 "Custom Event" 노드를 생성해준다.

그리고 해당 "Custom Event" 노드"TL_Move" 의 "Reverse" 에 연결해주면 된다.

 

"Color Track" 을 추가하면 색상관련 타임라인이 추가된다.

색상의 타임라인 "Key" 는 팔레트를 클릭 시 생성되고, 생성된 "Key" 를 더블 클릭하면 색상을 변경할 수 있다.

 

색상 타임라인을 추가하면 "TL_Move" 노드에 색상과 관련된 타임라인 출력핀이 생성되고, 이 핀을 "Set Text Render Color" 노드를 생성한 뒤에 위의 BP 사진과 같이 연결해주면 된다.

 

결과적으로 해당 충돌 스피어에 충돌하면 텍스트의 크기와 색상이 타임라인 대로 동시에 변하게 된다.

 

Timer by Event

 

이건 대체 뭐냐

"Set Timer by Event" 노드를 생성하고 "MyTimer" 라는 이름의 커스텀 이벤트를 새로 생성한다.

timer by event 커스텀 이벤트 연결

'Time' 을 0.1로 설정하고 Looping을 체크한다.

리턴 밸류핀 드래그 promote to 변수 -> 타이머 이벤트 관련 변수 생성

아까 만들어둔 엔드 오버랩 쪽에 clear and invalidate timer by handle 생성 후 연결

생성한 타이머 이벤트 변수를 handle에 연결

 

간단한 미로 게임 제작

Contents Drawer에서 새로운 레벨을 생성한다.

 

기존처럼 "Basic" 이 아닌, 아무것도 없는 "Empty Level" 을 생성한다.

 

생성하면 검은 화면이 뜨는데, 우측 탭의 "Env. Light Mixer" 에서 기본적인 환경을 추가해줄 수 있다.

 

"Create Sky Atmosphere" 를 누르면 태양의 위치를 생성할 수 있다.

태양의 위치만을 설정하는 것이기에 밝아지지는 않는다.

"Create Directional Light" 를 누르면 푸른 하늘을 생성할 수 있다.

"Create Volumetric Cloud" 를 누르면 하늘에 구름이 생성된다.

"Create Skylight" 를 누르면 태양이 생성된다.

"Create Height Fog" 를 누르면 지평선 아래쪽이 푸른빛으로 바뀌고 허공에 떠있는 듯한 느낌을 준다.

마지막으로 "Place Actors" 의 "Shapes" 에서 "Plane" 을 선택한 뒤 바닥을 생성해주면 아래 사진과 같이 된다.

 

바닥의 스케일을 100 / 100 / 100 값으로 키워준 뒤, 2일차에서 했던 것처럼 벽을 세워주면 미로를 만들 수 있다.

 

"Content Drawer" 를 들어간 뒤 "StarterContent" 폴더에서 다양한 에셋을 활용 가능하다.

 

"Directional Light" 는 보면 "Intensity" 를 통해 광원의 세기를 설정할 수 있는데, 기본 값은 10으로 되어있다.

이를 1로 줄이면 하늘이 밤이 된 것처럼 어두워졌다 다시 밝아지는데, 이는 언리얼 엔진 자체 암순응 기능 때문이다.

 

게임 분위기를 어둡게 만드려면 일단 "Place Actors" 에서 "Postprocess Volume" 를 검색하여 해당 액터를 레벨 임의의 장소에 배치한다.

그리고 "Postprocess Volume" 의 "details" 탭에서 "Post Process Volume Settings" 의 "Infinite Extend (Unbound)" 를 체크하고, "Lenz" 의 "Exposure" 에서 "Min" 을 1, "Max" 를 2로 설정해준다.

이렇게 하면 어두운 하늘을 유지할 수 있다.

 

*액터의 벡터를 'alt + 마우스 휠 누른 상태로 드래그하면 임시로 해당 액터의 벡터 위치 변경이 가능

*액터를 우클릭한 뒤, "Pivot" 에서 해당 액터의 벡터 위치를 영구적으로 변경 및 초기화가 가능

 

*"Place Actors" 의 "Basic" 에서 "Player Start" 위치를 지정한 뒤, "Play" 키 옆 점 3개를 눌러 "Default Player Start" 로 변경해주면 지정한 위치에서 플레이어가 스폰됨

 

"Content Drawer" 를 들어간 뒤 "StarterContent" 폴더에서 다양한 에셋을 활용 가능

 

attenuation -> override attenuation 체크

소리 원근감 주기

 

project maps modes -> default mode에서 설정되어있는 게임 모드가 있으면 world setting -> gamemode override에서 none 값이어도 해당 game mode로 실행됨

 

world setting -> gamemode overridde -> game mode일 경우, 1인칭 시점의 게임이 실행됨

점프해도 제자리로 돌아오지 않고 부양돼있음

 

content drawer에서 우클릭으로 niagara system을 생성해서 효과를 줄 수 있음

default pawn class 캐릭터 관리

 

thirdpersoncharacter BP에서 캐릭터를 따라다니는 오브젝트 생성 가능

add point light: 캐릭터를 따라다니는 머리 위 조명

add spot light: 캐릭터를 따라다니는 손전등 형식의 조명

add niagar: 지정한 niagar 이펙트 출력

component 탭에서 default scene rootsphere을 올림

simulate physics 체크 -> 레벨에 배치하면 공처럼 물리충돌 가능