| 항목 | Overlap | Hit |
|---|---|---|
| 발생 조건 | 두 콜리전이 겹쳤을 때 | 두 물체가 실제로 충돌(물리적 접촉)할 때 |
| 설명 | 물체끼리 겹칠 때 발생하며, 물리 충돌은 없음 | 물리 시뮬레이션이 적용된 실제 충돌 시 발생 |
| 물리 시뮬레이션 | 필요 없음 | 보통 한쪽 이상에서 Simulate Physics 필요 |
| 충돌 설정 | Overlap | Block |
| 주 사용 예시 | 플레이어가 트리거 존에 들어갈 때 | 총알이 벽에 부딪히는 경우 |
📍 BP_OverlapActor
Overlap Actor 만들기
액터 추가
디테일에서 블루프린트 화
큐브 컴포넌트 추가
▶ 콜리전 프리셋을 OverlapAll로 변경
▶ 오버랩 이벤트 생성 ☑
EventTick


Event ActorBeginOverlap
히트 이벤트 생성
콜리전 프리셋을 BlockAll로 변경
Hit 이벤트 추가

🌀 Event Hit 정보
| 항목 | 설명 |
|---|---|
| My Comp | 충돌한 내 쪽 컴포넌트 |
| Other | 충돌한 상대 액터 (Other Comp가 속한 액터) |
| Other Comp | 상대 쪽의 충돌 컴포넌트 |
| Self Moved | 누가 움직였는지 확인, 이 액터가 움직여서 충돌한 경우 true |
| Hit Location | 충돌이 발생한 정확한 월드 좌표 |
| Hit Normal | 충돌 지점에서의 표면 방향 벡터 |
| Normal Impulse | 충돌 시 전달된 충격량 (힘의 세기) |
| Hit | 위 정보들을 포함한 구조체 (FHitResult) |
| Break Hit Result | Hit 구조를 개별 변수들로 분해해서 확인 가능 |
AI르탄이에게 적용시키기

🌀 콜리전 설정 정리
| 항목 | 설명 |
|---|---|
| 콜리전 프리셋 | Pawn, BlockAll 모두 폰끼리 충돌 조건 충족 → 어떤 걸 선택해도 무방 |
| 시뮬레이션 중 히트 이벤트 생성 | 체크 시, 물리 시뮬레이션 중 충돌 시 Event Hit 발생 |


레벨 블루프린트 열기
이벤트 디스패치 생성
나중에 특정 상황에서 실행할 수 있는 사용자 정의 이벤트 신호를 만든다
🌀 Event Dispatcher 정리표
| 단계 | 설명 | 비유 표현 |
|---|---|---|
| Event Dispatcher 생성 | 사용자 정의 이벤트 신호를 만들어 놓는 것 (아직 실행 X) | 방송국 개설 |
| Bind | 이 신호를 들었을 때 어떤 함수(이벤트)가 실행될지 연결 | 청취자 등록 |
| Broadcast | 신호를 실제로 보냄 → 바인드된 함수들이 실행됨 | 방송 시작 → 청취자 반응 |
▶ 바인드, 호출
🌀 이벤트 디스패처 관련 용어 정리
| 용어 | 설명 |
|---|---|
| 호출 (Call) | 디스패처를 호출해 이벤트를 실행함 (함수처럼 Broadcast 실행) |
| 바인드 (Bind) | 특정 이벤트(함수)를 디스패처에 연결함 → 호출 시 함께 실행됨 |
| 언바인드 (Unbind) | 연결된 이벤트(함수)를 해제 → 호출해도 실행되지 않음 |
| 모두 언바인드 | 연결된 모든 이벤트(함수)를 한 번에 해제 |
| 이벤트 (Event) | 실행 가능한 동작 단위. 디스패처에 바인드되거나 단독으로도 사용 가능 |
| 할당 (Assign) | Bind와 유사하게 이벤트를 연결하는 방식 (Assign은 노드를 묶어서 한 번에 정의) |
📌 참고
| 종류 | 설명 |
|---|---|
| Line Trace | 직선 라인을 발사해 처음 부딪힌 물체의 정보를 반환 |
| 광선이 통과하지 않음 – 첫 번째 충돌만 인식 | |
🔹 출력: Hit, Return Value (부딪혔는지 여부) | |
| Multi Line Trace | 직선 라인을 발사해 여러 개의 충돌체를 모두 검출 |
| 광선이 여러 물체를 통과하면서 모든 충돌 정보를 배열로 반환 | |
🔹 출력: Hit Array (여러 Hit 결과) |
🔎 활용

Multi Line Trace로 여러 물체 감지 및 이름 출력
1️⃣ Multi Line Trace by Profile
➡ 한 번에 여러 개의 라인을 발사하여, 광선이 통과하면서 부딪힌 모든 물체를 감지함
➡ Profile Name은 "Pawn" 사용 가능
2️⃣ For Each Loop with Break
➡ 충돌 결과 배열(Hit Results)을 하나씩 반복하며 처리함
➡ 중간에 조건에 따라 루프를 멈출 수도 있음 (Break 사용 가능)
3️⃣ Break Hit Result
➡ 각 충돌 결과에서 세부 정보(Actor, 위치 등)를 분해하여 꺼냄
4️⃣ Get Object Name
➡ Hit Result에서 얻은 액터의 이름을 추출
5️⃣ Print String
➡ 추출한 이름을 화면에 출력함
➡ 반복문이 도는 동안 여러 이름이 순차적으로 출력됨
6️⃣ Loop Completed
➡ 모든 요소 반복이 끝나면 완료 메시지 출력 또는 후속 동작 실행 가능

라인트레이스로 물체 감지 및 이름 출력
1️⃣ Start
➡ 르탄이(자기 자신)의 현재 위치에서 라인트레이스를 시작
2️⃣ End (100, 100, 100)
➡ 시작 위치에서 1m 거리(예: 방향 벡터 × 100)를 더한 지점까지 트레이스를 쏨
3️⃣ Actor to Ignore
➡ 트레이스 시 무시할 액터를 지정함 (자기 자신 외의 특정 액터 제외 가능)
4️⃣ Ignore Self
➡ 체크하면 자기 자신은 충돌 검사에서 제외되어 중복 감지를 막을 수 있음
5️⃣ Profile Name
➡ 충돌 판정을 위한 프로파일 이름 설정
(예: "Pawn"은 캐릭터 탐지용으로 적합)
6️⃣ Return Value
➡ 라인트레이스가 무언가에 부딪혔는지를 나타냄
true일 경우 충돌이 발생한 것
7️⃣ Out Hit
➡ 충돌한 대상의 정보를 담고 있으며, Break Hit Result로 분해하여 액터 이름 등을 확인 가능
▶ 1m 반경 내로 들어가면 이름 출력됨
▶ AI에 가까이 가기만 해도 르탄이 쓰러짐
| 항목 | 설명 |
|---|---|
| 의미 | 액터를 이동시키면서 중간 경로에 충돌이 있는지 확인하는 기능 |
| 설정 예시 | SetActorLocation(NewLocation, Sweep = true) |
Sweep = false | 그냥 순간이동 (충돌 여부 무시) |
Sweep = true | 이동 중 충돌 감지 시 멈춤 또는 반응 |
| 사용 위치 | SetActorLocation, MoveComponentTo 등 이동 관련 함수에서 사용 |
| 주요 목적 | 충돌을 피하며 안전하게 이동 |
| 충돌 정보 확인 | 충돌 시 Out Hit으로 HitResult 구조체 정보 획득 가능 |
| 요약 | 🚀 Sweep = 충돌 감지 기능을 켠 채로 이동시키기 |
🌀 Sweep vs Line Trace
| 항목 | Sweep | Line Trace |
|---|---|---|
| 기본 개념 | **오브젝트 전체 모양(콜리전)**을 이동시키며 충돌 감지 | **보이지 않는 직선(선 하나)**으로 충돌 감지 |
| 사용 방식 | SetActorLocation, MoveComponentTo 등에서 사용 | LineTraceByChannel, LineTraceByProfile 등으로 사용 |
| 형태 | **입체적인 콜리전 모양(박스, 캡슐 등)**으로 감지 | 얇은 선 한 줄로 감지 |
| 감지 대상 | 이동 중에 충돌하는 모든 물체 | 쏜 라인과 처음 닿은 물체 (또는 여러 개) |
| 대표 용도 | 캐릭터 이동 시 충돌 검사, 밀기, 물리 반응 등 | 시야 감지, 타겟 포인트 감지, 사격 판정 등 |
| 비유 | 몸통 전체를 밀면서 부딪히는지 확인 | 레이저 포인터로 찍어서 맞았는지 확인 |
| 요약 | 물체 자체를 움직이며 충돌 검사 (실제 이동 포함) | 선을 쏴서 감지만 하고 물체는 이동하지 않음 (탐지용) |
1️⃣ 라인 트레이스
2️⃣ 시야 판정 방식
3️⃣ Behavior Tree Decorator
📍 BTD_IsNearPlayer
4️⃣ 개선 조건 추가
▶ 시작점 추가 (자기 위치)
▶ 끝점 : Player Pawn의 위치
1️⃣ 시작점과 끝점 연결
2️⃣ Actors to Ignore
3️⃣ Ignore Self
4️⃣ 트레이스 결과 판단
5️⃣ Branch 조건 연결
6️⃣ "왜 True가 실패인가?"
🧠 요약
Line Trace가 무언가에 부딪히면 시야를 차단한 것이므로, True인 경우 조건 실패로 판단한다
➡ 중간에 물체가 막으면 AI르탄이가 따라오지 못함