사전 캠프 퀘스트
간단한 상호작용 구현 (문 열기 또는 아이템 줍기)
왜 중요한가요?
상호작용은 사용자가 게임과 소통하는 핵심 수단입니다. 문을 열거나 아이템을 줍는 것처럼 단순한 기능이라도, 사용자 경험을 ‘게임답게’ 만드는 결정적인 요소입니다. 이 과제를 통해 수강생은 블루프린트를 활용한 기본 인터랙션 구현 능력을 갖추게 됩니다.
개념 바로 알기
Line Trace란?
눈앞에 있는 오브젝트를 탐지하는 “레이저 광선” 같은 기능
마우스나 키보드로 상호작용 대상 탐지 시 사용됨
인터랙션 키 바인딩
키보드 입력을 통해 특정 이벤트 실행
일반적으로 E키나 마우스 클릭에 매핑
제출하기
직접 구현해보기
구현과정과 느낀점, 이미지를 첨부하여 TIL로 작성 후 제출해주세요.
[내일배움캠프 Unreal] 사전캠프 - 문 열기 또는 아이템 줍기
1.오늘 배운 개념 요약
상호작용은 사용자 경험을 게임 답게 만드는 결정적인 요소로 문을 열거나 아이템을 줍는 것같은 기능들이 해당된다.
Line Trace는 눈 앞에 있는 오브젝트를 레이저 광선을 이용해 탐지하는 것과 같은 기능으로
사용자의 입력 상호작용 대상 탐지에 사용된다.
상호작용 키는 일반적으로 특정 이벤트를 실행시키는 키로 E키 혹은 마우스 클릭 등에 맵핑해서 사용한다.
2.구현 과정 요약 (스크린샷 + 간단 설명)
상호작용 동작 장면 영상 (10초 내외)
MyCharacter와 대상 Actor 블루프린트 주요 노드 캡처
목표: 캐릭터가 눈앞의 오브젝트와 상호작용할 수 있도록 구현합니다.
[Step 0] Interact 입력 Mapping 추가
Edit → Project Settings → Input
Action Mappings에 Interact(키: E) 추가
E 키 이벤트를 블루프린트에서 찾기 위함.
E키 상호작용 맵핑 등록
[Step 1] 문 또는 아이템 블루프린트 생성
새 Actor 블루프린트 생성 (BP_InteractableDoor 또는 BP_PickupItem)
Static Mesh 추가 (문 / 아이템 등으로 보이게 설정)
생성한 BP_InteractableDoor/BP_PickupItem 에디터에서
Components 탭의 Static Mesh 선택
Collision Presets → BlockAll 설정
Line Trace가 오브젝트를 정확히 감지합니다.
상호작용을 위한 문,아이템용 블루프린트 생성
문 static mesh 에셋(https://fab.com/s/686c8e019644)
아이템 static mesh 에셋(https://fab.com/s/4d67ec6a761d)
문, 아이템 Static Mesh 콜리전 BlockAll 설정(LineTrace 감지를 위해서)
[Step 2] 상호작용 범위 구현 (Line Trace)
MyCharacter 블루프린트에 Line Trace by Channel 노드 추가
E 키 입력 → Line Trace → Hit된 오브젝트 태그 확인 → 이벤트 실행
blueprint
복사편집
E Pressed → LineTraceByChannel → BreakHitResult → Check Tag → Custom Event 실행
Plain Text
E키 입력 시 상호작용을 위해서 카메라가 보고 있는 방향으로 라인트레이스 이용 상호작용 오브젝트 찾기 이벤트 그래프
[Step 3] 문 열기 or 아이템 줍기 로직 추가
문이면: SetRelativeRotation으로 회전값 변경
아이템이면: Destroy Actor로 사라지게 처리
라인트레이스에 감지된 오브젝트(Actor)의 태그(Door, Item)를 확인해서 상호작용 구분지어서 동작하기 위한 이벤트 그래프
감지된 오브젝트(Actor)의 태그가 Door일 경우 문의 열림 상태(Is Open) 체크 후 해당 Door의 Door Pivot 기준으로 회전해서 문 열고 닫는 동작 이벤트 그래프
감지된 오브젝트(Actor)의 태그가 Item일 경우 해당 아이템 없애는 동작 이벤트 그래프
[Step 4] 태그 설정 & 테스트
상호작용 대상 블루프린트에 Tag: Interactable 설정
게임에서 캐릭터가 E 키를 눌러 상호작용 되는지 테스트
감지된 액터 체크를 위해서 문 액터에 Door 태그 추가
감지된 액터 체크를 위해서 아이템 액터에 Item 태그 추가

플레이어가 E 키를 누르면 카메라가 바라보는 방향으로 라인트레이스를 발사해 상호작용 가능한 객체를 판별하도록 구현했으며, 문은 “Door” 태그를 기반으로 식별하여 경첩 위치에 배치한 DoorPivot 컴포넌트를 회전시켜 자연스럽게 열리고 닫히도록 만들었고, IsOpen 변수를 통해 문 상태를 저장해 토글 방식으로 제어하도록 구성하였다. 아이템은 “Item” 태그를 통해 구분하며 상호작용 시 DestroyActor로 제거되도록 설정하였고, 전체 테스트 결과 문은 정상적으로 열리고 닫히며 플레이어가 통과할 수 있고, 아이템은 E 키 입력 시 자연스럽게 사라지는 등 상호작용 기능이 모두 의도대로 안정적으로 동작하는 것을 확인하였다.
3.느낀 점 & 개선하고 싶은 점
이론적으로는 E 키 입력에 따라 문이 열리고 아이템이 사라지는 매우 단순한 기능처럼 보였으나, 실제 블루프린트 구현 과정에서는 각 기능이 정확히 동작하도록 여러 조건을 명확하게 분리해 구성해야 했다. 특히 문의 경우 회전 동작을 제어할 때 회전값 설정이 부정확하거나 Pivot 위치가 잘못되면 문이 의도와 다른 방향으로 회전하는 문제가 발생하여, 구조적 설계가 미흡하면 예상하지 못한 오류를 찾느라 많은 시간을 소모하게 된다는 점을 확인할 수 있었다. 이번 구현을 통해 상호작용 시스템은 단순해 보이더라도, 내부 로직과 구조를 사전에 충분히 설계하고 고려하는 과정이 매우 중요하다는 것을 느꼈다.