3. 바닥 배치

기본 레벨에 바닥만 제거한 맵을 저장했었다. 이제 여기에 밟을 수 있는 바닥을 배치해야 한다.

아웃라이너에서 바닥만을 모아둘 폴더를 만든다. 종류별로 폴더로 묶어놔야 관리가 편해지기 때문이다. 기존 하늘을 구성하는 액터들이 괜히 Lighting폴더안에 있는게 아니다.

콘텐츠 브라우저에서 스태틱 메시만을 볼 수 있게 필터를 적용했다. 그래야 발판으로 쓸 모델을 찾기가 편하다. 어제 내가 골랐던 에셋처럼 바닥으로 쓰는 모델은 floor라고 이름을 붙이는 경우가 많으니 floor라고 검색해보자. (간혹 그렇지 않는 에셋도 있으니 알아서 잘 검색하자) 바닥으로 쓸 수 있는 것이 많이 나온다.
바닥을 쓸 스태틱 메시를 정했다면 그대로 뷰포트(맵)에다가 드래그 하자.

그러면 자동으로 그 스태틱 메시를 갖는 액터가 배치된다. 이 액터는 일단 폴더 밖에 배치되니 Floor폴더에 직접 집어넣는다. 그리고 마우스를 놓은 위치대로 언리얼 엔진이 알아서 위치를 잡아놨을텐데 그냥 처음 놓은 발판이니 디테일 화면을 통해 (0,0,0)으로 옮기자

하나씩 드래그해서 놓기엔 귀찮으니 대충 아웃라이너에서 복사-붙여넣기로 복제한다.


처음에 프로젝트 생성시 삼인칭을 고른 이유는 캐릭터가 필요하기 때문이라고 했다. 맵에 미리 배치된 액터 중 PlayerStart가 있는데 이것을 바닥 한가운데에 놓고 게임을 시작하면 그 위치에 기본 캐릭터가 배치되어 조종할 수 있다.
직접 조종해보고 바닥이 좁다 싶으면 바닥을 더 복제하자.

충분히 넓은 바닥을 만들었다. 그런데 만든 바닥에 아무것도 없으니 허전하다. 뭔가 좀 추가해야겠다. 에셋 내에 바닥 장식용 스태틱 메시가 있으니 같이 사용하면 좋을것 같다.

바닥 장식을 추가하고 바깥 부분에 다른 바닥 타일을 추가하니 낫다.

그런데 바닥 장식으로 추가한 스태틱 메시에서 미세한 높낮이 차이가 느껴진다. 그래서 바닥 장식으로 추가한 모든 액터에서 콜리전 프리셋을 NoCollision으로 바꿨다.
4. 벽 배치

지금은 캐릭터가 바닥 밖으로 나가면 영원히 아래로 떨어진다. 다시 복귀할 방법이 없다. 이를 막기 위해 벽을 배치해야 한다.

내가 고른 에셋에는 당연히 벽으로 쓰는 스태틱 메시가 존재한다. 얘네들을 적절히 골라서 바닥 배치하듯 벽을 배치하면 되겠다.

모든 바닥을 Floor 폴더로 묶은것 처럼 모든 벽은 Wall 폴더로 묶는다.

벽 가운데는 문을 놔뒀다. 실제로 열리는건 아니고 벽 장식으로 쓸 것이지만 열리는 기능을 구현하라고 만든건지 문과 문틀이 별개의 메시로 있는 것을 발견했다. 그래서 맵에 배치할때는 문을 문틀의 하위 액터로 놔둬 하나로 만들었다.


벽을 모두 배치했다. 그리고 캐릭터는 더이상 밖으로 나갈 수 없다.

좀 돌려보니 문틀에 올라서는 문제가 발견했다.

그래서 모든 문 틀마다 박스 컴포넌트를 추가했다.


박스 컴포넌트의 크기와 위치를 지정해주고 콜리전 프리셋을 BlockAll로 변경해주는 것으로 문제를 해결했다.
'언리얼엔진 학습 및 과제' 카테고리의 다른 글
| 게임 루프 및 UI 재설계 과제 (4) (0) | 2025.10.02 |
|---|---|
| 게임 루프 및 UI 재설계 과제 (3) (0) | 2025.10.01 |
| 게임 루프 및 UI 재설계 과제 (1) (0) | 2025.09.29 |
| 언리얼 엔진에서 빌드가 안될때 (0) | 2025.09.23 |
| [내일배움캠프] 상호작용 추가하기 (3) | 2025.08.08 |