[UE5] Collision, Overlap

kkado·2024년 2월 12일
0

UE5

목록 보기
9/61
post-thumbnail

두 개의 액터가 서로 맞닿으면 충돌 또는 오버랩 이벤트를 발생시킬 수 있다.

여기서 우리는 액터의 두 가지 프로퍼티에 대해 알아야 할 필요가 있다.

  • Simulation Generates Hit Events : 두 개의 액터가 서로 맞닿았을 때 가로막기로 설정되어 있다면 '그 액터의' hit event를 발생시킨다. 그 액터의 라는 것은, 반대편 액터의 hit event가 체크되어 있지 않으면 그 액터는 hit event가 발생하지 않는다는 것을 의미한다.

  • Generate Overlap Events : 두 개의 액터가 서로 겹쳐지기로 설정되어 있다면 overlap 이벤트를 발생시킬 수 있다. 이 때는 서로 맞닿은 두 개의 액터가 모두 overlap event 체크가 되어 있어야 함에 주의한다.

Collision Preset

액터가 다른 타입의 액터와 맞닿았을 때 어떤 이벤트를 발생시키고, 어떻게 동작할지 프리셋으로 저장되어 있는 것들 중에서 사용하거나, 임의로 커스텀하여 사용할 수 있다.

'Object type' 에서 본 액터의 타입을 정할 수 있고, 다른 타입의 오브젝트들과 부딪혔을 때 response를 아래 체크박스를 통해 설정할 수 있다. 예를 들어 위의 사진 같은 경우 모든 타입의 액터에 대해 block, 즉 가로막아 통과할 수 없게 하도록 설정되어 있다.

또는 위의 'Collision Enabled' 선택 상자에서 선택하여 설정할 수 있다. 'Query Collision'은 오버랩, 'Physics Collision'은 블로킹을 의미한다.

직접 추가

project settings -> new object channel 을 이용해서 프리셋을 직접 추가하여 사용할 수도 있다.


활용

위 그림과 같이 큐브 위에 구를 배치했고, 구는 physicsBody, 큐브는 WorldStatic으로 설정했다. 그리고 두 액터 모두 'simulation generates hit events', 'generate overlap events' 프로퍼티를 켜주었다.

그리고 큐브의 collision response를 모두 block으로 해 주었다.

실행시켜보면 큐브 위로 구가 떨어질 때 통과하지 않고 위에 올라가 있는 것을 확인할 수 있다.

이번에는 physicsBody에 대한 response를 overlap으로 변경해 보았다.

구를 통과시키는 모습을 확인할 수 있다.

blueprint에 응용

위와 같이 큐브에 'event hit' 노드를 이용해 hit event가 발생했을 때 hello를 출력하는 로직을 작성했다.

닿아 있는 동안 지속적으로 hit event가 발생하기 때문에 Hello가 여러 차례 출력되는 것을 확인할 수 있다.

collision response를 overlap으로 변경하고 event beginOverlap 노드를 이용해 overlap이 시작될 때 Hello를 출력하는 로직을 작성했다.

이러면 최초 오버랩이 시작되는 지점에서 Hello가 한 번만 출력되게 된다.

profile
울면안돼 쫄면안돼 냉면됩니다

0개의 댓글