Collision
- Generate Overlap Events
overlap 발생시 event 실행이 가능하도록 함.
(아이템 mesh에 캐릭터가 겹치면 overlap이 발생하고, 이후 event를 따로 설정하여 진행 가능하도록 함)- Can Character Step Up On
캐릭터가 해당 오브젝트를 밟고 올라갈 수 있도록 함.
Collision Preset
종류 설명 Default 기본세팅 Custom... 사용자가 직접 설정한 충돌 규칙 사용가능 NoCollision 다른 물체와 충돌하지 않음 BlockAll 모든 물체와 충돌하고 겹칠 수 있음 OverlapAll 해당 물체가 다른 물체와 겹칠 수 있지만, 충돌이 발생하지 않음. 이 설정은 트리거 역할을 할 때 유용함 BlockAllDynamic 해당 물체가 모든 Dynamic한 물체와 충돌하지만, Static한 물체와는 충돌하지 않음.
(플레이어는 다른 Dynamic한 물체와 충돌 가능하지만 배경되는 Static한 물체와는 충돌하지 않음으로써 플레이어는 움직이는 물체들과 상호작용 가능하면서도 환경에는 영향을 미치지 않음.)OverlapAllDynamic 해당 물체가 모든 Dynamic한 물체와 겹칠 수 있지만, 실제 충돌은 발생하지 않음. 일종의 트리거처럼 동작. 물체 간의 교차 여부 감지 가능.
(플레이어가 특정 지역에 들어가면 어떤 행동을 취하도록 하거나, 플레이어가 특정 아이템을 획득하면 이벤트를 발생시키는 데 사용할 수 있음.)IgnoreOnlyPawn Pawn과의 충돌만 무시 OverlapOnlyPawn Pawn과의 Overlap만 가능 Pawn Paawn에게만 충돌 Spectator 특정 캐릭터에 고정되어 있지 않고, 자유롭게 world를 이동하며 관찰 가능한 Spectotor에 대한 충돌만 가능 CharacterMesh CharacterMesh에 대한 충돌 PhysicsActor 믈리적으로 시뮬레이션되는 물체와 충돌 Destructible 파괴가능한 오브젝트와 충돌 InvisibleWall 보이지 않는 벽과 충돌 InvisibleWallDynamic 보이지 않는 동적인 벽과 충돌 Triger 충돌 이벤트를 발생시키지만 물체와 겹치지 않음 Ragdoll 시체와의 충돌, 죽은 시체에 충돌시 관련된 skeletal mesh component를 움직이는데 사용되는 것 같음 Vehicle 자동차 및 차량 관련 오브젝트의 충돌을 제어하는 데 사용 UI UI 관련 충돌 제어
Collision Enabled
- Query Collision
물체 간의 충돌
-Raycasts:추적
-Sweeps:물체가 이동하는 경로에 따라 충돌(중첩) 감지
-Overlaps:특정 영역에 대한 충돌(중첩) 감지)을 확인하고 처리하는 방법을 제어한다.
물체들이 상호작용할 때 사용되며, 두개의 오브젝트가 서로 충돌했는지 여부를 확인하거나 충돌한 지점을 찾는 데 사용된다.- Physic Collision
쿼리 충돌이 없는 물리학적인 충돌
종류 설명 No Collision 모든 것들(Physics와 Query)과 충돌하지 않음 Query Only(No physics Collision) 쿼리에 대한 충돌만 Physics Only(No Query Collision) 물리적 충돌에 대해서만 Collision Enabled(Query and Physics) 쿼리와 물리적 충돌 둘다 가능 Probe Only(Contact Data, No Query or Physics Collision) 충돌을 감지하는 용도로만 물체 사용.
물체의 위치를 검사하거나 특정 지역에 대한 충돌 검사를 수행할 때 사용.
물리 시뮬레이션을 적용하지 않기 때문에 충돌 감지가 빠르고 경저적Query and Probe(Query Collision and Contact Data, No Physics Collision) 충돌 탐지뿐만 아니라 실제 물리 시뮬레이션에도 참여함.
캐릭터가 지형과 충돌하여 이동해야 하거나,물체가 다른 물체에 의해 밀려나야 할 때 사용.
- NoCollision
- Query Only
Raycast가 사용된 FootTrace때문에 발은 올라가지만 CapsuleComponent의 경우 돌과 겹치는 것을 확인 가능함.
추가로 카메라가 오브젝트에 가려져 줌인되는 것도 query가 있어야 가능함- Physics Only
- Collsion Enabled
바위의 Static mesh에 들어가서 상단의 Collision 탭에 있는Add 26DOP Simplified Collision
을 누르면 collision을 생성할 수 있다.
이상태에서 Collision Enabled를 선택하고 실행하면 둘다 Collision이 발생하는 것을 확인할 수 있다.
벽의 Collsion 설정을 pawn-ignore에 camera-block일 경우 비밀문 같은 것도 구현 가능
Overlap
아이템과 캐릭터가 겹쳤을 때, 해당 아이템을 얻는 것과 같은 기능을 만들기 위해서는 overlap을 사용해야 한다.
먼저 만들어둔 BP_Item에서 Collision을 Custom으로 해두고, Pawn을 Overlap 가능하게 설정하면 캐릭터가 해당 오브젝트를 overlap하는것이 가능하도록 설정 가능하다.
EventGraph에서Event ActorBeginOverlap
노드는 Actor가 Overlap할 경우에 event를 발생시키므로 해당 노드에서print string
노드를 이용하면 Overlap 여부를 확인할 수 있다.
다만 이렇게 되면 조건이 StaticMesh와 겹쳤을 경우이므로 범위가 너무 한정적이게 된다.
그러므로 오브젝트 주변에 보이지 않는 구체를 생성하고 해당 구체와 충돌 발생시 작동하도록 구현하면 해결 가능하다.
좌측의 Add 버튼을 클릭하고Sphere Collision
을 선택한다.
우측의 Details 패널에서Sphere Radius
를 적절히 조절하여 Sphere Collision의 크기가 오브젝트보다 조금 더 크게 설정한다.
이렇게 하면 직접적으로 겹치지 않더라도 overlap 가능하다.
다만 이 방법에는 문제가 있는데, Event ActorBeginOverlap 노드는 위와 같이 Sphere Collision과 충돌하지 않고 오브젝트와 충돌해도 Overlap이 발생한다.
원하는 결과는 오브젝트가 아닌 Sphere Collision과의 overlap이므로 다른 노드를 사용해야 한다.
On Component Begein Overlap
노드를 사용하면 해당 컴포넌트와 overlap시 event 발생이 가능하다.
이를 응용하여 overlap이 발생한 오브젝트의 이름도 출력할 수 있다
또한 overlap을 발생시킨 오브젝트의 이름도 출력 가능하다.