Unreal Engine Blueprint #4

_ dfdeer·2025년 5월 9일
post-thumbnail

5. 에셋 내비게이션 및 간단한 게임 씬 구성

개념 알기

내비게이션(Navigation)

내비게이션은 캐릭터가 씬 안에서 자연스럽게 이동할 수 있는 공간을 의미한다.
캐릭터가 지나갈 수 없는 곳은 막고, 통과 가능한 구조를 명확히 해야 게임이 부드럽게 동작한다.

충돌(Collision)

콜리젼은 오브젝트와 캐릭터가 실제로 닿는지 판별해주는 시스템이다.
벽을 뚫고 지나가지 못하게 하기 위해 사용하기도 한다.

구현해보기

1. 씬 컨셉

나는 마을 하나를 만들고 주인공이 용사인 맵을 하나 만들 생각이다.
자연 속에서 성벽에 둘러싸인 마을이 있고, 마을 내부와 밖을 돌아다닐 수 있는 맵을 만들 예정이다.

2. 레벨 및 랜드스케이프 생성

우선 Games > Blank 로 새 프로젝트를 만들어준다.

그리고 새로운 레벨을 만들어준다.

그럼 이런 식으로 까만 화면이 나오는데, 이게 정상이다. 아무것도 배치를 하지 않았기 때문이다.

BP_SunSky 라는 새로운 액터를 만들어준다.

BP_SunSky 를 씬에 배치해준 뒤, 위치를 (0,0,0) 으로 고정해준다.

블루프린트에 들어가서 컴포넌트 5개를 추가해준다.
( SkyLight / VolumetricCloud / DirectionalLight / SkyAtmosphere / AtmosphericFog )

추가를 하고 나면 뷰포트에 이런 식으로 경고 문구가 뜰텐데

Details 패널에서 Light > Forward Shading Priority 를 1로 바꿔주면 된다.

이제 레벨로 돌아와 확인해보면 이렇게 하늘이 생긴다.

Details 패널에서 DirectionalLight 의 회전 값을 변경해주면

이런 식으로 태양을 더 위로 올려 밝게 만들 수도 있다.

이제 맵을 만들어 줄 건데, 먼저 모드를 Landsacpe 로 변경해준다.

그럼 씬이 이렇게 변경이 된다.

왼쪽을 보면 Landscape 패널이 있는데, 여기서 땅을 생성할 수 있다.
나는 작은 맵을 만들 예정인데 8 x 8 은 너무 크니까 4 x 4 정도로 줄이기로 했다.

생성을 하면 이렇게 땅이 생긴다.

지형은 자연을 배경으로 할 것이기 때문에 Sculpt 도구를 이용해 조금 울퉁불퉁하게 만들어줬다.

건축물 같은 것들은 내가 만들 능력이 안 되기 때문에 적당한 에셋 하나를 구해왔다.
Add To Project 를 눌러 프로젝트에 에셋을 추가시켜 준다.

정상적으로 잘 추가가 된 모습.

이제 땅에 머티리얼을 추가할 거기 때문에, 아웃라이너에서 Landscape 를 선택해주고 Details 패널에서 Landscape > Landscape Material 을 MI_landscape 로 변경해준다.

그리고 Landscape 패널의 Paint 탭을 들어가주고 맨 아래에 있는 Layers 옆에 보면 Create Layers From Assinged Materials 라고 버튼이 따로 있는데, 이걸 클릭해준다.

그럼 이렇게 사용 가능한 머티리얼들이 나온다.

대충 마을이 있을 곳을 제외하고 풀과 자갈로 칠해줬다.

이번엔 Foliage 모드로 넘어가준다.

다운 받은 에셋 하위 폴더를 보면 meshes 라고 있는데, 이 안에 있는 파일을

Foliage 패널에 드래그 해서 넣어주면 된다.

난 우선 자연을 표현하기 위한 풀과 나무들을 폴리지에 넣었다.

나무도 무작위로 마구 배치해주고 이제 마을을 둘러 쌀 벽도 깔아줬다.
벽은 Selection 모드로 하는게 편할 것 같아서 바꿔서 했다.

근데 웬만하면 다 깔고 싶었는데 더 하다간 뒷목 잡고 쓰러질 것 같아서 그만뒀다.
어차피 오늘 하려는 건 콜리젼이니까.

3. 콜리젼을 이용한 문 열기

생각해보니까 캐릭터를 안 넣어놔서 새 에셋을 하나 가져왔다.
캐릭터 이동 구현과 애니메이션은 이전에 했던 것들을 복습할 겸 다시 보면서 만들었다.

이제 이 문에 캐릭터가 다가가면 열리게 하는 작업을 할 예정이다.

새로운 액터 블루프린트를 만들어 이런 모양으로 배치해주고 박스 콜리젼도 넣어주었다.

그리고 문 여는 함수를 이런 식으로 짜두었다.

테스트 플레이

https://drive.google.com/file/d/1xZOEV0OEd3IwCAYIhrYFpPpkun6cY9eY/view?usp=sharing

잘 작동한다.

학습 내용 요약 & 느낀점

오늘은 랜드스케이프와 충돌을 위주로 공부했다.
풍경을 꾸미면서 생각보다 자연스럽게 표현하는 게 어렵다는 걸 느꼈고, 오버랩 함수를 이용하는데 꽤 많은 작업을 해야한다는 것을 깨달았다.

처음부터 끝까지 만들어보고 싶어서 빈 프로젝트로 시작해봤는데 나름 재미있었던 것 같다.

0개의 댓글