Unreal Engine 5 오브젝트, 라이트, 비주얼 이펙트 및 게임모드

조정원·2025년 5월 21일
post-thumbnail

TIL(Today I Learned)

먼저 삼인칭 템플릿의 오브젝트와 비슷하게 배치해보았다.
오브젝트를 놓는 것은 언리얼의 기본 조작과 위치, 회전, 스케일을 변환해주고, 스태틱 메쉬와 머터리얼만 변경해주면 되어서 비교적 쉬운 작업이다. 하지만, 몇 개 안되는 오브젝트를 배치하는데도 생각보다 시간이 소모되었다. 나중에 디테일한 레벨을 구현하고자 하면 다른데보다 여기서 시간이 오래 걸릴 것 같다.

여기 chamfer cube 이 친구는 템플릿에서는 충돌하면 움직이는데 여기서는 움직이지 않는다.

디테일 패널의 피직스에서 피직스 시뮬레이트를 키고 질량과 각 댐핑을 설정해주어야 한다.
대부분의 파라미터는 템플릿과 비슷하거나 똑같이 설정하였다.

질량 설정 시 피직스 시뮬레이트를 잘못된 액터에 설정하면 오브젝트가 무너져내릴수 있으니 조심해야한다.

템플릿에는 다음과 같은 라이트와 비주얼 이펙트들이 설정되어 있다. 하나씩 추가하면서 살펴보면 좋을 것 같다.

가장 위에 있는 Directional Light는 이미 레벨에 배치해 두었다.
Directional Light는 라이트 중 레벨에서 기본이 되는 라이트라고 볼 수 있는데 햇빛과 같은 역할을 한다고 볼 수 있다. 그래서 레벨 전체에 균일한 빛을 표현해준다.
빛의 위치는 무시되고 방향이 중요한데 방향에 따라 그림자 등이 표현된다. 또한 SkyAtmostpher나 SkyLight와 연동되어 낮과 밤 등을 표현할 수 있다.

다음으로 SM_SkySphere를 추가해주었다.

이것은 구형 메시의 안쪽에 하늘의 텍스쳐와 색상, 구름 등을 표현한 액터이다.
하늘을 표현해주고, 태양의 위치에 따라 하늘의 색이 변하여 낮과 밤을 표현해준다.

다음으로 SkyLight를 추가해보면

추가하기 전

추가한 후

SkyLight는 간접광 역할을 해주어 위 그림처럼 그림자 안쪽이 너무 어두어지는 것을 막아주고, 레벨 전체에 퍼지는 빛을 만들어 준다.

다음은 Sky Atmosphere를 추가해주었다.
현실적인 하늘의 변화와 높이, 색상 변화 등을 표현하는 시스템이다.

그 다음은 Exponential Height Fog를 추가해주었다.

멀리 있는 지평선 근처를 안개로 뿌연 느낌을 준다. 그리고 정확히는 모르겠지만 안개가 하늘의 파란색을 반사해서 그런지 지면 아래쪽은 파랗게 보이게 된다.

다음으로 Volumetric Cloud를 추가하면 진짜 구름처럼 보이는 입체 구름을 렌더링한다. 구름에 밝기나 색 등이 반영되어 사실감을 극대화해준다.

추가하기 전

추가한 후

마지막 Post Process Volume이다.
이것은 볼륨 내에 시각 효과를 적용해주는데 사용되는데 무한규모(언바운드)를 체크하면 맵 전체에 적용할 수 있다.
빛, 색감, 노출 등의 변화를 줄 수 있다.

결과물을 보면 약간의 조명 차이를 제외하곤 삼인칭 템플릿과 상당히 비슷한 것을 볼 수 있다.

이제 게임모드만 적용해주면 완성될 것 같다.
게임을 플레이해보면 뷰포트의 시점에서 생성되는 수상한 캐릭터가 있다.

이것은 이미 만든 템플릿에서 새로운 레벨을 추가했기 때문에 월드 세팅에 이전 게임모드가 적용되어 있어서 그렇다.
새로 게임모드를 만들어주겠다.
블루프린트 클래스를 만들고 게임모드 베이스를 선택한다.

만들어준 블루프린트 클래스의 디테일 패널에서 디폴트 폰 클래스를 내가 만든 BP_Character를 선택한다.

그리고 뷰포트의 월드 세팅에서 게임모드 오버라이드를 아까 만든 게임모드 블루프린트 클래스를 적용해주면 된다.

이제 플레이어 스타트 액터를 배치해주기만 하면 된다.
전에 배치한 캐릭터 블루프린트클래스는 제거해준다.

이렇게 테스트해도 잘 만들어졌지만 점프의 높이가 조금 낮은게 느껴진다.
점프는 캐릭터 블루프린트클래스의 캐릭터 무브먼트 컴포넌트에서 중력 스케일과 점프 Z 속도를 조절하면 된다.

최종적으로 만든 Copyed Third Person Template를 보면 잘 동작하고 상당히 비슷하게 잘 구현되었다.

진짜 마지막으로 한가지 추가하자면 내가 만든 레벨은 게임을 시작할 때 어떤 버그나 오류인지 모르겠지만 플레이어가 공중에 떠있는 것으로 인식하여 착지모션을 한다.
템플릿에서 내 캐릭터를 가져가서 사용해도 잘 되고, 내 레벨에서 템플릿의 캐릭터를 가져다가 사용할 때는 또 안되어서 어떤 문제인지 알기 어려웠다.
캡슐컴포넌트는 확실히 바닥에 붙어 있어서 이건 아닌 것 같았다. 그래서 Begin Play에서 캐릭터 컴포넌트의 Isfalling을 Print로 확인해보았는데 true로 나온다. 진짜 공중에 떠 있다고 인식하고 있었다.
일단은 아래와 같이 시작할 때의 무브먼트 모드를 임의로 바꾸어주는 것으로 해결하였다.

다음으로 해 볼 것은 Adcanced Locomotion Sytem V4이다.
여러가지 학습용 에셋들을 따라서 만들어 보는 것이 학습에 도움이 될 것이라 생각이 들어서 이것저것 따라서 만들어볼 계획이다. 이동을 구현해본 다음 쉽게 접근할 만한 것이라고 생각했고 달리기, 천천히 걷기, 숙이기 등 보행에서 응용되는 것들과 AI 기능들을 살펴볼 수 있다.

profile
게임 AI 개발자 조정원입니다.

0개의 댓글