| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
- unrealengineai
- 언리얼비헤이어비어트리
- c++
- 언리얼엔진5
- 월드아웃라이너
- 게임개발
- DX
- ipc(inter process communication)
- 자료구조정리
- 게임엔진튜토리얼
- c언어정리
- 프로그래밍
- c++class
- c++porinter
- 영단어정리
- 자료구조
- 자료형타입
- uaiperception
- 수학용어정리
- 언리얼엔진공부
- leveleditor
- livrary
- bttask
- 프로그래밍일기
- directx
- 각도변환
- 25.06.11dir
- c++용어정리
- 언리얼엔진
- 언리얼ai
- Today
- Total
루리코딩 세상
Unreal Engine : Collision 설정하기 본문
그래픽 게임에서 충돌을 설정해주어야, 각 객체(Object) 간의 상호작용을 만들어낼 수 있다.
앞서서 프로젝트 예제를 통해서 하였던 실습들은 충돌과는 관련없는 애니메이션, 오브젝트를 소환하고
InPut값에 따른 행위를 노드로 실행하는 로직을 만들었다. 이번에는 Bot기능을 추가하기 이전에
충돌 기능을 설정함으로서 상호작용에 밑바탕을 만드는 것을 목적으로한다.
🔷 Collision 핵심 개념
1. Collision
- 물체 간 충돌/감지를 처리하는 시스템
- Block / Overlap / Ignore의 세 가지 반응 방식으로 구성됨
🔹 콜리전 구성 요소들
2. Collider
- 충돌 처리를 위한 모양(Shape)
- 메시와 별개로 충돌만 담당하는 보이지 않는 영역
- 세 가지 주요 종류: Box, Sphere, Capsule
3. Box / Sphere / Capsule
| Box | 사각형 형태의 충돌 (넓은 물체에 적합) |
| Sphere | 구형 충돌체 (폭탄, 공 등 구형 오브젝트에 적합) |
| Capsule | 사람형 캐릭터 충돌 기본값 (가장 자연스럽게 걷고 부딪힘 처리됨) |
→ Add Component > Collision에서 추가 가능
4. Overlap
- Block과 다르게 부딪히지 않고 겹치며 감지
- 이벤트를 트리거하는 용도로 사용 (예: 아이템 줍기, 트랩 감지)
// 예: 오버랩 발생 시 함수 실행
OnComponentBeginOverlap.AddDynamic(this, &MyActor::OnOverlapBegin);
5. Component Begin Overlap
- 컴포넌트 단위의 오버랩 이벤트 발생 시 호출
- 블루프린트에서는 OnComponentBeginOverlap (Box, Sphere 등) 노드로 시각적으로 사용
💡 사용 예: 무기 범위 안에 들어오면 데미지 처리
6. ANS_Collision (Anim Notify State - Collision)
- 애니메이션 동안 충돌 처리를 하기 위한 Notify
- 주로 공격 애니메이션 중 무기의 충돌을 감지할 때 사용
→ Notify State (ANS_Collision) 넣기
→ Begin/End에서 콜리전 활성화/비활성화
💡 예: 검 휘두를 때만 충돌 켜고, 끝나면 끄기
7. SetCollisionEnabled
- 실시간으로 콜리전 활성/비활성 제어
Set Collision Enabled (QueryOnly)
Set Collision Enabled (PhysicsOnly)
Set Collision Enabled (QueryAndPhysics)
💡 무기나 방패가 부딪히지 않게 만들고 싶을 때 유용 (스폰 후 바로 끄기 등)

충돌체가 없는 기존의 오브젝트에 충돌체를
추가하는 것부터 기능을 넣을 것이다.

[Collision]을 넣을 컴포넌트 [Actior] 클래스의 [Capsule Collision] 을 추가했다.
[Box Collision] 박스 충돌체
[Sphere Collision] 박스 충돌체
[Capsule Collision] 박스 충돌체
| Box | 직육면체 | 정확한 위치 제어 | 모서리 끼임 가능 | 벽, 바닥, 큐브 |
| Sphere | 구 | 회전 무관, 반응 부드러움 | 각진 물체엔 부적합 | 범위 감지, 원형 충돌 |
| Capsule | 원기둥 + 반구 | 캐릭터 충돌 최적화 | 넓은 부피 | 캐릭터, NPC 충돌체 |




이제 본격적으로 노드를 설정해줬다.

테스트를 위해서, [Print String]으로
실행되도록 하였더니, 칼을 뽑고 넣을때
본인도 데미지를 입는 것을 볼 수 있었다.
이러한 문제를 해결하기 위해 아래의
노드처럼 설정을 해줬다.


다음과 같이 충돌을 인식하는 노드를 설정하였으나 여러가지 문제점이 발생되었는데,
Holster에 장착되어있는 무기에도 충돌이 발생하는 문제점이
여전히 존재하는 것을 Print string으로 나타나는 것을 확인 할 수 있다.
- 게임에서는 무기를 휘두를 때 정확히 충돌이 발생하는 순간에만 출력되는 값이 필요로하다.
- 불필요한 상태에서 데미지를 입는 로직을 사전에 막아야한다.

오버랩 관리하기는 [디테일] - [콜리전]
[오버랩 이벤트 생성] 을 통해서 관리가 가능하나,
오버랩이 될 오브젝트도 마찬가지로 해당 디테일
활성화(체크)가 되어야, 정상적으로 충돌이 일어난다.
이러한 문제점을 해결하기 위해,
[Begin Event] 에서 해제하고, 원하는 액션에 다시 활성화 시키는 방법을 통해서 노드를 설정하려한다.

[BeginPlay], [Set Collision Enabled], [Capsule]을 사용하여, 시작시 충돌을 끈다.




[Set Collision Enabled] 설정에서 다른 점이 있었는데,
Notify Begin, End에서 각각 New Type에서 다양한 기능 중 알맞게 선택한다.
기능은 총 6가지가 있었다. 개별적인 것은 따로 정리해야겠다.


나의 경우에는 칼을 내려치기 위해서 올린 순간부터 충돌을 인식 할 수 있도록
[Shift] 기능을 활용해서 원하는 동작에 알맞게 배치했다.

마지막으로 [Destroy Actor] 기능을 통해서,
충돌된 Ohter Actor를 메모리에서 제거되는
로직을 추가해봤다.
정상적으로 메모리가 월드에서 제거되는 것을
확인 가능했다.
이제 본격적으로 적을 만들어보자........
'이론 > Unreal Engine' 카테고리의 다른 글
| Unreal Engine : 적 생성 및 색상 설정하기 (0) | 2025.06.07 |
|---|---|
| (수정필요) Unreal Engine : Relative & 에디터 시작 월드 설정하기 (0) | 2025.06.07 |
| Unreal Engine : Slot Notify (1) | 2025.06.07 |
| Unreal Engine : 콤보 공격 만들기 (6) | 2025.06.05 |
| UnrealEngine : 몽타주 기능 활용하기 (0) | 2025.06.05 |