I. 오버랩(Overlap) 이벤트
1) 오버랩(Overlap)
① 정의
- 두 액터 또는 콜리전 컴포넌트가 서로의 영역 안으로 들어가 겹쳐질 때 발생하는 이벤트
② 예시
- 자동문 감지
- NPC 대화 시작
- 아이템 줍기
- 적의 감지 범위
③ 대표 오버랩 이벤트

OnActorBeginOverlap
- 다른 액터가 영역 안으로 들어오는 순간 1회 실행
OnActorEndOverlap
- 다른 액터가 영역 밖으로 나가는 순간 1회 실행
2) 레벨 블루프린트 사용 - 오버랩 구현
① Trigger Box 배치


② 오버랩 이벤트 생성
- 생성한 트리거 박스가 클릭된 상태로 추가


Other Actor
- 오버랩되는 액터
③ 블루프린트 예시 - Other Actor
흐름
- 액터 오버랩 -> 이름 출력

- 좌측 상단에 오버랩되는 액터의 이름을 출력

3) 오브젝트 블루프린트 사용 - 오버랩 구현
① 액터를 상속받는 블루프린트 클래스 생성
② Box Collision 컴포넌트 추가
- 오브젝트 자체가 감지 영역을 가지도록 만드는 컴포넌트


③ 블루프린트 예시 - Other Actor
흐름
- 액터 오버랩 -> 이름 출력

- 좌측 상단에 오버랩되는 액터의 이름을 출력

4) 적 캐릭터가 플레이어를 바라보는 시스템 (오버랩이벤트 응용)
목표
- 플레이어가 적의 감지 범위 안에 들어오면 적이 플레이어 방향으로 회전함
① 액터를 상속받는 블루프린트 클래스 생성
② 스태틱 메시 추가
③ Sphere Collision 컴포넌트 추가
- 오브젝트 자체가 감지 영역을 가지도록 만드는 컴포넌트
- 적의 시야 범위 역할


- 스태틱 메시가 바라보는 방향을 X축 방향으로 일치
- 월드의 기본 방향은 X축

④ 오버랩이벤트 - 블루프린트 작성
Cast To Character
- 오버랩이벤트는 모든 액터를 감지함
- 적이 플레이어만 추적하게 하고 싶음
- 오버랩한 대상이 플레이어인지 확인하는 기능
Find Look At Rotation
- 현재 위치에서 어느 방향을 바라봐야 하는지 계산
- 플레이어를 바라보는 회전값을 계산하는 기능
- Start에 현재 위치 연결
- Target에 플레이어의 위치 연결
Set Actor Rotation
- 계산된 회전값 적용
- 적이 플레이러를 바라보게 하는 기능

문제점
- 오버랩되는 순간 한 번만 회전함
- 한 번에 너무 빠르게 회전함
- 플레이어가 움직여도 적이 더 이상 따라보지 않음
⑤ Character 변수 추가
- 플레이어를 계속 추적하려면 누구를 추적 중인지 기억해야 함


BeginOverlap (범위 안)
- Character 변수에 플레이어 정보 저장
EndOverlap (범위 밖)
- Character 변수에 플레이어 정보 삭제
⑥ Event Tick 사용
- Tick마다 범위 내 Character 존재 여부 검사
- 범위 내부에서 캐릭터가 움직여도 캐릭터 방향으로 회전이 따라감


문제점
- 여전히 한 번에 너무 빠르게 회전함
⑦ Lerp (선형 보간) 사용
- 회전을 부드럽게 하는 기능
현재 회전값
Get Actor Rotation
목표 회전값
Find Look at Rotation
보간 비율
Delta Seconds

⑧ 회전 속도 조절
- Delta Seconds에 연산자 x(Multiply) 사용

⑨ 결과
감지 범위(Sphere Collision) 내부에 플레이어 진입 -> 플레이어를 쳐다봄


II. 충돌(Collision) 이벤트
1) 충돌(Collision)
① 정의
- 두 액터가 실제로 물리적으로 부딪혔을 때 발생하는 이벤트
② 예시
- 차량 충돌
- 총알 충돌
- 폭발
- 벽에 부딪힘
③ 대표 충돌이벤트
OnActorHit
- 액터 단위 충돌 감지
OnComponentHit
- 컴포넌트 단위 충돌 감지
- 실무에서는 이쪽을 많이 사용함
2) 충돌 이벤트
① 액터를 상속받는 블루프린트 클래스 생성
② Static Mesh 컴포넌트 추가

③ OnComponentHit 생성
- StaticMesh를 클릭한 채로 추가

④ 블루프린트 예시 - Other Actor
흐름
- 액터 오버랩 -> 이름 출력

- 좌측 상단에 충돌한 액터의 이름을 출력

3) 액터에 부딪히면 플레이어를 튕겨내는 시스템 (충돌이벤트 응용)
목표
- 플레이어가 액터에 부딪히면 날라감
- 폭발음이 들림
- 액터가 사라짐
- 폭발 이펙트가 생김
① 충돌이벤트 - 블루프린트 작성
Play Sound at Location
- 특정 위치에서 사운드 재생
Destroy Actor
- 액터를 제거

- 충돌 후 폭발음이 들리며 액터가 제거됨


② 캐릭터를 튕겨내기
Launch Character
- 캐릭터를 특정 방향 및 강도로 튕겨냄
Launch Velocity
- 밀어낼 방향
XY Override 체크
- 기존 이동속도 무시
Z Override 체크
- 기존 점프속도 무시




③ 폭발 이펙트 생성
Spawn System At Location
- 나이아가라 이펙트 생성
- 요즘 주로 사용하는 것
Spawn Emitter At Location
- Cascade 파티클 생성

캐릭터가 액터 접촉 -> 날라감 -> 폭발음 들림 -> 폭발 이펙트 생성 -> 액터 제거


III. 추가로 연습하기
1) 자동문 열기
목표
- 플레이어가 문 근처로 오면 열림
- 플레이어가 멀어지면 닫힘
① 액터를 상속받는 블루프린트 클래스 생성
② 스태틱 메시 추가
③ Sphere Collision 컴포넌트 추가
④ 블루프린트 작성
- 플레이어 감지 범위 진입 -> 문 열림 True
- 플레이어 감지 범위 이탈 -> 문 열림 False

Branch 사용
- True일 때 -> 문 열림
- False일 때 -> 문 닫힘
문제점
- 문의 경첩을 기준으로 돌아가지 않고, 문의 중심을 기준으로 돌아감
⑤ Scene 컴포넌트 추가
- Scene 컴포넌트를 스태틱 메시의 부모 컴포넌트로 추가
- 스태틱 메시와 Sphere Collision을 경첩으로 쓸 Scene 컴포넌트의 좌측으로 옮겨줌



2) 움직이면서 플레이어를 날려버리는 자동차 만들기
목표
- 일정 구간을 움직이는 액터 생성
- 액터와 캐릭터가 부딪히면 캐릭터가 튕겨나감
블루프린트 작성




'언리얼 엔진 > 개념 정리' 카테고리의 다른 글
| 개념 정리 - 환경 디자인(랜드스케이프, 폴리지) (0) | 2026.06.19 |
|---|---|
| 개념 정리 - 콜리전 (0) | 2026.06.18 |
| 개념 정리 - 액터(이동) (0) | 2026.06.15 |
| 개념 정리 - 블루프린트(2) (0) | 2026.06.14 |
| 개념 정리 - 블루프린트(1) (0) | 2026.06.14 |