언리얼 엔진/개념 정리

개념 정리 - 액터(오버랩이벤트와 충돌이벤트)

journey46110 2026. 6. 16. 21:29

I. 오버랩(Overlap) 이벤트

1) 오버랩(Overlap)

① 정의
- 두 액터 또는 콜리전 컴포넌트가 서로의 영역 안으로 들어가 겹쳐질 때 발생하는 이벤트

 

② 예시

- 자동문 감지

- NPC 대화 시작

- 아이템 줍기

- 적의 감지 범위

 

③ 대표 오버랩 이벤트

오버랩 이벤트

OnActorBeginOverlap

- 다른 액터가 영역 안으로 들어오는 순간 1회 실행

 

OnActorEndOverlap

- 다른 액터가 영역 밖으로 나가는 순간 1회 실행

 

2) 레벨 블루프린트 사용 - 오버랩 구현

① Trigger Box 배치

기본 - 트리거 박스
Scale 조정

② 오버랩 이벤트 생성

- 생성한 트리거 박스가 클릭된 상태로 추가

트리거 박스를 클릭한 상태로 우클릭
OnActorBeginOverlap

Other Actor

- 오버랩되는 액터

 

③ 블루프린트 예시 - Other Actor

흐름

- 액터 오버랩 -> 이름 출력

오버랩되는 액터의 이름을 출력

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

결과

3) 오브젝트 블루프린트 사용 - 오버랩 구현

① 액터를 상속받는 블루프린트 클래스 생성

 

② Box Collision 컴포넌트 추가

- 오브젝트 자체가 감지 영역을 가지도록 만드는 컴포넌트

Box Collision
박스 크기 조정

③ 블루프린트 예시 - Other Actor

흐름

- 액터 오버랩 -> 이름 출력

오버랩되는 액터의 이름을 출력

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

결과

 

4) 적 캐릭터가 플레이어를 바라보는 시스템 (오버랩이벤트 응용)

목표

- 플레이어가 적의 감지 범위 안에 들어오면 적이 플레이어 방향으로 회전함

 

① 액터를 상속받는 블루프린트 클래스 생성

 

② 스태틱 메시 추가

 

③ Sphere Collision 컴포넌트 추가

- 오브젝트 자체가 감지 영역을 가지도록 만드는 컴포넌트

- 적의 시야 범위 역할

Sphere Collision
Sphere Collision - 디테일

- 스태틱 메시가 바라보는 방향을 X축 방향으로 일치

- 월드의 기본 방향은 X축

예시

④ 오버랩이벤트 - 블루프린트 작성

Cast To Character

- 오버랩이벤트는 모든 액터를 감지함

- 적이 플레이어만 추적하게 하고 싶음

- 오버랩한 대상이 플레이어인지 확인하는 기능

 

Find Look At Rotation

- 현재 위치에서 어느 방향을 바라봐야 하는지 계산

- 플레이어를 바라보는 회전값을 계산하는 기능

- Start에 현재 위치 연결

- Target에 플레이어의 위치 연결

 

Set Actor Rotation

- 계산된 회전값 적용

- 적이 플레이러를 바라보게 하는 기능

캐릭터 방향으로 회전

문제점

- 오버랩되는 순간 한 번만 회전함

- 한 번에 너무 빠르게 회전함

- 플레이어가 움직여도 적이 더 이상 따라보지 않음

 

⑤ Character 변수 추가

- 플레이어를 계속 추적하려면 누구를 추적 중인지 기억해야 함

Character 변수 생성
Character 변수 사용

BeginOverlap (범위 안)

- Character 변수에 플레이어 정보 저장

 

EndOverlap (범위 밖)

- Character 변수에 플레이어 정보 삭제

 

⑥ Event Tick 사용

- Tick마다 범위 내 Character 존재 여부 검사

- 범위 내부에서 캐릭터가 움직여도 캐릭터 방향으로 회전이 따라감

캐릭터 존재 여부 검사
Tick마다 범위 내부 캐릭터 여부 검사 후 회전 결정

문제점

- 여전히 한 번에 너무 빠르게 회전함

 

⑦ Lerp (선형 보간) 사용

- 회전을 부드럽게 하는 기능

 

현재 회전값
Get Actor Rotation

 

목표 회전값

Find Look at Rotation

 

보간 비율

Delta Seconds

캐릭터 방향으로 부드럽게 회전

⑧ 회전 속도 조절

- Delta Seconds에 연산자 x(Multiply) 사용

회전 속도 조절

⑨ 결과

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

01
결과

 

 

II. 충돌(Collision) 이벤트

1) 충돌(Collision)

① 정의

- 두 액터가 실제로 물리적으로 부딪혔을 때 발생하는 이벤트

 

② 예시

- 차량 충돌
- 총알 충돌
- 폭발
- 벽에 부딪힘

 

③ 대표 충돌이벤트

OnActorHit

- 액터 단위 충돌 감지

 

OnComponentHit

- 컴포넌트 단위 충돌 감지

- 실무에서는 이쪽을 많이 사용함

 

2) 충돌 이벤트

① 액터를 상속받는 블루프린트 클래스 생성

 

② Static Mesh 컴포넌트 추가

Statc Mesh 컴포넌트

③ OnComponentHit 생성

- StaticMesh를 클릭한 채로 추가

OnComponentHit

④ 블루프린트 예시 - Other Actor

흐름

- 액터 오버랩 -> 이름 출력

충돌되는 액터의 이름을 출력

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

결과

 

3) 액터에 부딪히면 플레이어를 튕겨내는 시스템 (충돌이벤트 응용)

목표

- 플레이어가 액터에 부딪히면 날라감

- 폭발음이 들림

- 액터가 사라짐

- 폭발 이펙트가 생김

 

① 충돌이벤트 - 블루프린트 작성

Play Sound at Location

- 특정 위치에서 사운드 재생

 

Destroy Actor

- 액터를 제거

충돌하면 사운드 재생 후 액터 제거

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

01
결과

② 캐릭터를 튕겨내기

Launch Character

 

- 캐릭터를 특정 방향 및 강도로 튕겨냄

 

Launch Velocity

- 밀어낼 방향

 

XY Override 체크

- 기존 이동속도 무시

 

Z Override 체크

- 기존 점프속도 무시

충돌 -> 캐릭터 튕겨냄 -> 폭발음 재생 -> 액터 제거
012
결과

③ 폭발 이펙트 생성

Spawn System At Location

- 나이아가라 이펙트 생성

- 요즘 주로 사용하는 것

 

Spawn Emitter At Location

- Cascade 파티클 생성

이펙트 및 파티클 생성

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

최종 블루프린트
결과

 

 

III. 추가로 연습하기

1) 자동문 열기

목표

- 플레이어가 문 근처로 오면 열림

- 플레이어가 멀어지면 닫힘

 

① 액터를 상속받는 블루프린트 클래스 생성

 

② 스태틱 메시 추가

 

③ Sphere Collision 컴포넌트 추가

 

④ 블루프린트 작성

- 플레이어 감지 범위 진입 -> 문 열림 True

- 플레이어 감지 범위 이탈 -> 문 열림 False

플레이어 감지 -> 자동문 여닫힘

Branch 사용

- True일 때 -> 문 열림

- False일 때 -> 문 닫힘

 

문제점

- 문의 경첩을 기준으로 돌아가지 않고, 문의 중심을 기준으로 돌아감

 

⑤ Scene 컴포넌트 추가

- Scene 컴포넌트를 스태틱 메시의 부모 컴포넌트로 추가

- 스태틱 메시와 Sphere Collision을 경첩으로 쓸 Scene 컴포넌트의 좌측으로 옮겨줌

Scene 컴포넌트
01
결과

2) 움직이면서 플레이어를 날려버리는 자동차 만들기

목표

- 일정 구간을 움직이는 액터 생성

- 액터와 캐릭터가 부딪히면 캐릭터가 튕겨나감

 

블루프린트 작성

일정 구간을 반복적으로 움직이는 기능 및 액터와 캐릭터가 부딪히면 캐릭터가 튕겨나가는 기능
012
결과