컨텐츠 검색
[UE5 BP] _#7. 언리얼 엔진 블루프린트 통신 (1) - Overlap 기반 문·레버 상호작용과 재사용 가능한 구조 이해하기

2025. 11. 25. 15:54Unreal Engine/개념

1. Level Blueprint + On Actor Overlap으로 메시/문 상호작용

  • 레벨 내 큐브의 초기 위치에 TriggerVolume 배치
  • Level Blueprint에서 다음 이벤트 사용
    (※ 괄호 안의 TriggerVolume은 직접 붙인 액터명이며, 언리얼의 키워드가 아님)
    • On Actor Begin Overlap (TriggerVolume)
    • On Actor End Overlap (TriggerVolume)
  • Begin/End Overlap 시 수행:
    • 큐브와 겹쳤나?
    • 겹쳤으면 Set Visibility, Set Collision Enabled 호출
      → 문이 보였다/안 보였다, 충돌이 켜졌다/꺼졌다로 변화
  • Level Blueprint 특징:
    • “이 레벨에서만 쓰는 한 번짜리 스크립트” 성격
    • 레벨에 직접 배치된 특정 문/메시 등을 직접 참조하여 제어하는 패턴

StartingMap 레벨 블루프린트 클래스


2. Trigger를 이용한 "플레이어가 가까우면 문 열림 / 멀어지면 닫힘"

  • 문 블루프린트(또는 액터)에 Box Collision 컴포넌트 추가
    • 문 블루프린트 그래프에서 이벤트 사용:
      • On Component Begin Overlap (Trigger)
      • On Component End Overlap (Trigger)
    • Overlap한 Actor가 플레이어인지 확인:
      • Get Player Character
      • Other Actor와 비교 → 플레이어일 때만 문 열기/닫기
    • 동작 흐름:
      • Begin Overlap → 문 열기
      • End Overlap → 문 닫기
    🔎 포인트
    • 문 블루프린트 안에 문 + Collision이 함께 있어
      블루프린트를 여러 개 배치하면 그대로 재사용 가능.

BP_Door 블루프린트 클래스


3. 재사용 가능한 블루프린트 클래스로 문 만들기

  • 2 방식의 문 로직을 Blueprint Class로 정리
  • 구성 컴포넌트:
    • StaticMesh(문)
    • Box Collision(Trigger)
  • 이벤트:
    • On Component Begin Overlap (Trigger)
    • On Component End Overlap (Trigger)
  • 커스텀 이벤트:
    • OpenDoor
    • CloseDoor
  • 동작:
    • Begin Overlap → OpenDoor 호출
    • End Overlap → CloseDoor 호출

→ 이 블루프린트를 레벨 어디든 복붙하면 자동으로 문 동작함.

자손 블루프린트 클래스 생성
BP_Door_Trigger 블루프린트 클래스. (BP_Door의 자손) Box Collision을 추가하여 트리거 범위 설정
BP_Door 블루프린트 클래스(부모)
BP_Door_Trigger 블루프린트 클래스(자손)


4. 퍼블릭 변수 + 레버로 문 열기

  • 레버 액터와 문 액터를 분리
  • 레버 블루프린트에 문 참조 변수(Actor reference)를 퍼블릭으로 노출
    • DoorToOpen(타입: 문 블루프린트 클래스)
  • 레버를 당겼을 때:
    • DoorToOpen에 있는 OpenDoor 커스텀 이벤트 호출
  • 퍼블릭 변수의 장점:
    • 레버마다 다른 문을 연결 가능
    • 같은 문 블루프린트를 사용해도 열리는 속도·각도 등을 인스턴스별로 조정 가능

BP_LevelDoor의 변수(우측에 눈 뜨고 있으면 퍼블릭 변수, 감고 있으면 프라이빗 변수) 오브젝트나 클래스 타입도 가능.
BP_LevelDoor의 디테일. 디폴트 항목을 보면 퍼블릭 변수만 수정 가능함.
BP_LeverDoor 블루프린트 클래스
BP_Door_Lever 블루프린트 클래스(BP_Door의 자손)


5. 개념 정리

5-1. On Actor Overlap vs On Component Overlap 비교

구분 기준 On Actor Overlap On Component Overlap
감지 주체 Actor 전체 특정 Collision Component
이벤트 종류 On Actor Begin/End Overlap On Component Begin/End Overlap
실행 위치 주로 Level Blueprint 주로 Blueprint Class 내부
사용 목적 레벨 단위 큰 구역 감지
(입장/퇴장 존, 컷신 트리거)
오브젝트 단위 상호작용
(문, 레버, 상자 등)
구조적 특징 Actor가 가진 모든 Collision을 통틀어 감지 Component 단위로 개별 감지 가능
정밀도 낮음 (세부 구분 불가) 높음 (센서를 여러 개 둘 수 있음)
재사용성 낮음 (레벨 종속) 높음 (클래스 기반 재사용 가능)
대표 사용 방식 레벨에 배치된 Actor와 직접 연결해 로직 구성 BP 내부에서 Component 이벤트 기반 로직 구성
전형적활용
예시
튜토리얼 시작 구역, 특정 구역 진입 효과 플레이어 가까우면 문 열기, 상자 오픈, 레버 작동
Other Actor
판별 방식
들어온 Actor가 누구인지 Actor 단위로 확인 들어온 Actor + 어떤 Component에
닿았는지까지 확인 가능
장점 넓은 구역 감지에 용이, 레벨 전체 이벤트 처리에 적합 재사용성 좋고, 오브젝트별 독립적인 상호작용에 적합
단점 세밀한 감지가 어려움,
오브젝트 별 동작 분리 어려움
레벨 전체 영역 관리에는 부적합

5-2. Overlap 이벤트 처리 흐름 비교

On Actor Overlap 흐름

  1. Actor 전체의 Collision에 다른 Actor가 진입
  2. On Actor Begin Overlap 발생
  3. 이벤트의 Other Actor로 대상 확인
  4. 조건 분기(Branch) 후 후속 로직 실행
  5. 레벨 내 특정 구역/상황에 대한 일회성 로직 처리에 적합

On Component Overlap 흐름

  1. 특정 Collision Component에 다른 Actor가 진입
  2. On Component Begin Overlap 발생
  3. Other Actor / Other Component 정보 활용
  4. 플레이어인지 여부 확인 후 로직 실행
  5. 문, 레버, 상자 등 오브젝트 단위 상호작용 구현에 적합

5-3. 상속 구조와 이벤트 확장의 관계

부모-자식 간 Overlap 이벤트

  • 부모는 On Component Overlap 이벤트 + 기본 동작 정의
  • 자식은 같은 커스텀 이벤트 Override
  • Parent 호출 여부로 기능 확장 제어
  • 재사용성과 기능 확장성 모두 확보

상속 관계가 없는 블루프린트 간 통신

  • Actor Overlap이든 Component Overlap이든 관계없이
    다른 블루프린트의 커스텀 이벤트를 참조를 통해 호출
  • 단순 호출이며 Override/Parent와는 무관

5-4. 퍼블릭 변수와 Overlap의 연계

값 제어 변수

  • 문 열리는 속도/각도, 자동/수동 여부 등을 인스턴스별로 설정
  • Blueprint Class + Component Overlap 구조와 궁합이 좋음

참조 변수

  • 레버가 어떤 문을 켜야 하는지 같은 관계 설정
  • 레버의 Component Overlap이 발생했을 때
    참조된 문에 OpenDoor 커스텀 이벤트 호출