오늘 해볼 것은 에셋을 활용해 간단하게 방을 하나 만들고 충돌 및 상호작용 테스트를 해볼 것이다.
사용한 에셋은Cicitoon Japanese-style Room V1.0 이다.
https://www.fab.com/ko/listings/7fd9ff05-8141-4637-a697-664742f9234c
Cicitoon Japanese-style Room V1.0
Key Features:✦ Dual-mode Dynamic Lighting SystemCinematic Golden Hour Lighting PresetNightscape Observation ModeIntelligent Sequence Transition System✦ Procedural Generation ToolkitModular Mesh BlueprintsVegetation Distribution PCG SolutionTechnical Sp
www.fab.com
캐릭터가 자연스럽게 탐색할 수 있는 공간을 구성하기 위해 우선 배경이 되는 바닥과 벽 오브젝트를 배치해야 한다.

Third Person Template로 들어와서 불필요한 에셋들을 지우고 벽을 하나씩 세워보겠다.

기본 뼈대가 되는 벽과 바닥이다. 여기에 창문과 기둥들을 세워 하나씩 배치해보겠다.

어느정도 뼈대를 구축한 모습이다. 벽을 기준으로 세밀하게 나무 기둥들을 찾아 배치하는 것이 제법 시간이 걸렸다.
중간 점검을 위해 플레이를 해보았다
.

하지만 계단 앞에서 막혀서 지나가지 못하는 모습을 보였다. 캐릭터 신장이 커서 지나가지 못하나 싶어서 계단을 뒤로 빼보았지만 문제는 캐릭터가 아닌 계단에 있었다.
계단 자체가 벽 판정으로 지나갈 수 없게 막혀있는 모습이었다.

문제점을 찾기 위해 에셋을 분해해보기로 했다. 충돌 판정이 계단에서 자꾸 이상하게 생기니 콜리전에서 문제를 찾기로 하였다
.

표시에서 단순 콜리전과 복합 콜리전을 다 켜보았다.
복합 콜리전은 에셋의 크기에 맞게 잘 설정되어 있지만 단순 콜리전이 무언가 이상하게 설정 되어있었다.
이 단순 콜리전이 활성화 되어 있어서 충돌 판정이 생기는 것으로 생각하고 디테일에서 콜리전 복잡도를 확인해 보았다.
아니나 다를까 Simple And Complex(단순 콜리전과 복합 콜리전 모두 사용)가 활성화 되어 있었다. 따라서 Use Complex Collision As Simple(복합 콜리전만 사용)을 활성화 해준 뒤 다시 플레이를 해보았다.


수정이 잘 되어서 계단이 정상적으로 적용된 모습
다만 아쉬운 점이 있었다면 추가적인 에셋을 적용하던 과정에서 기둥 에셋을 찾아버린 것이다.

어느정도 에셋을 넣었으니 이제 간단한 상호작용을 만들어 보겠다.
먼저 프로젝트 세팅 > 입력에 들어가서 Action Mappings 에 Interact(키 : E)를 추가해주겠다.
블루프린트 내에서 E키 이벤트를 찾기 위함이다.

그 이후 액터 블루프린트(BP_InteractiveDoor, BP_PickupItem)를 생성해준다.



그 이후 생성한 블루프린트에서 Components 탭의 Static Mesh를 선택 후 추가해준다.(문/아이템으로 보이게 설정)
그 후 Collision Preset에서 BlockAll로 바꾸어준다.




그 이후 이전에 있던 문과 컵을 지운 뒤 방금 만든 블루프린트를 넣어준다.

이제 캐릭터의 상호작용 동작을 만들 것이다.
먼저 입력 액션 에셋을 만들어준다. 이름은 IA_Interact 로 하겠다.
그후 IMC_Default에서 매핑 할당을 해줄 것이다. IA_Interact를 추가해 준 뒤 E키를 할당해주겠다.


그 이후 캐릭터 블루 프린트에 들어가 블루프린트 노드를 추가해주겠다.



먼저 BP_ThirdPersonCharacter의 블루프린트를 설정해준다.
Line Trace By Channel 노드를 사용할 것인데 플레이어의 시선에 따라 상호작용이 되도록 만들것이다.
우선 플레이어의 시선의 시작은 플레이어의 머리이기에 Z좌표 70정도로 맞추어 시선이 맞게 해준다. 그리고 플레이어의 시선이 끝나는 지점을 지정해 줄 것인데 아주 멀리하지 않아도 가까이에 있는 아이템 정도만 상호작용 되게 만들것이니 XYZ 좌표 모두 300 정도로 설정을 해준다. 그 후 Line Trace By Channel > BreakHitResult > Check Tag (Interact) > Cast to BP_InteractiveDoor > (Cast Failed 시) Cast to BP_PickupItem 으로 설정해준다.
나는 여닫이 문이 아닌 미닫이 문으로 만들 예정이기에 조금 어려운 과정을 거쳤다.
BP_InteractDoor 이벤트그래프에 들어가 준 뒤 TimeLine을 이어주며 Lerp(Vector) 값을 입력해준 뒤 Set Actor Relative Location을 연결 해주고 Event BeginPlay >Start Location > Add(Vector : X -150) > End Location을 연결해주어 X좌표값을 -150만큼 이동시킨다. 이렇게 하여 문의 이벤트 노드가 끝났다
BP_PickupItem은 훨씬 쉬웠다. Custom Event (Interact) 를 만들어준뒤 Destroy Actor와 연결해주면 끝이었다.
설정이 모두 끝났으니 이제 테스트를 해볼 차례이다.
플레이 버튼을 눌러 작동이 잘 되는지 시험해보았다.
먼저 아이템과 상호작용키(E)를 눌렀을 때 시선에 맞춰 아이템이 사라지는 것을 볼 수 있다.
이후 문과 상호작용을 하자 문이 스르륵 열리는 것을 보아 정상적으로 작동하는 것을 볼수 있었다.
하지만 아쉽게도 반대로 문이 닫히게 하는 것은 아직 조금은 어려운 것 같았다.
끝으로 이번 시간은 굉장히 어려운 느낌을 많이 받았다. 블루프린트에 대해 아직 잘 모르는 느낌이기에 강의를 더 열심히 들어서 따라가야겠다는 생각이 들었다.
'사전캠프 TIL' 카테고리의 다른 글
| 04.17 Unreal 사전캠프 15일차) 미니 프로젝트 : 나만의 작은 던전 (0) | 2026.04.17 |
|---|---|
| 04.16 Unreal 사전캠프 14일차) 미니 프로젝트 : 장애물 피하기 게임 만들기 (0) | 2026.04.16 |
| 04.14 Unreal 사전캠프 12일차) 선배기수 게임 진행 (Steam 출시) (0) | 2026.04.14 |
| 04.13 Unreal 사전캠프 11일차) 캐릭터 Blueprint 생성 및 이동 설정 (0) | 2026.04.13 |
| 04.10 Unreal 사전캠프 10일차) 팀 발표회 진행 (0) | 2026.04.10 |