🎮Unreal4/C++

[UE4] Collision -2 : Component Overlap, Overlap And Hit

공대 컴린이 2023. 3. 2. 23:50
728x90

Actor Component 보다 실제로 많이 사용되는 Component Overlap을 구현해보았다.

🤸 Component Overlap

델리게이트로 사용될 함수를 작성하는 방법은 이전 게시글에서 설명해두었다. (F12를 통해 함수의 정의를 확인하며 매개변수를 복사 해 오는 방법)

2023.03.02 - [Unreal4/C++] - [UE4] Collision -1 : Actor Overlap

 

같은 방법으로 OnComponentBeginOverlap OnComponentEndOverlap 함수를 직렬화하여 작성하였다.

 

각 이벤트의 매개변수는 블루프린트에서 사용했던 매개변수와 동일하다!

 

이전 Actor Overlap에서는 Actor 자체의 이벤트를 사용한 경우였고, 이젠 Box 콜라이더에 있는 이벤트를 사용하였다.

 

각 함수에는 매개변수로 받은 객체들을 출력하며 테스트해보았다.

 

결과적으로 Component Begin/End Overlap이 호출될 때 로그에 매개변수 정보들이 출력되었다.

🤸 Overlap And Hit

다음은 Overlap 충돌과 Hit 충돌을 동시에 구현해보았다.

 

Component Overlap에 Component Hit 함수를 추가해주었다.

 

Box 콜라이더에 동일하게 AddDynamic 매크로로 함수를 등록해주었다.

 

함수가 호출될 때 OtherActor 매개변수명을 출력하도록 지정한 후,

 

콜리전 테스트 박스 위에 하나의 큐브를 배치한 후, 큐브Simulate Physics 항목을 체크 물리작용으로 아래로 떨어지며 테스트 박스와의 Hit 충돌을 테스트하기 쉽도록 배치하였다.

 

콜리전 테스트 박스의 Simulation Generates Hit Events 항목을 체크하여 Hit 충돌을 수행하도록 만들었고, 기존의 콜리전 프리셋이 Overlap All Dynamic(전부 겹침연산만)으로 설정되어 있었기 때문에 Custom으로 변경하여 Physics Body와 블록연산 하도록 변경해주었다.

또한 기존 Collision Enable이 Query Only(겹침연산만)로 설정되어 있었기 때문에 Overlap 충돌과 Hit 충돌을 모두 가능하게 하는 Collision Enable로 변경해주었다.

 

결과적으로 테스트 박스 콜라이더와 큐브 간의 Hit 연산이 성공적으로 실행되며 로그를 출력하였고, 캐릭터와 테스트 박스 콜라이더간의 Overlap 충돌 결과도 로그로 출력되었다.

728x90