언리얼엔진/언리얼 C++

충돌의 기초

season97 2024. 10. 21. 12:08

 개인적인 공부를 위해 포스팅 하는 글입니다.


 

#충돌

그냥 액터하나 만들어보자. 다양한 옵션들이 있다.

ㆍ 사실 이것도 충돌이다. 마우스 위치를 레이케스트로 쏘는방식

 

 

# 콜리전의 종류

Query Only

ㆍ 쉽게 말해 "충돌" 그 자체만 처리하는거. 물리적인 연산같은건 신경쓰지 않고 시뮬레이션 하지도 않고, 겹쳤냐? 안겹쳤냐? 만 판단할때 사용하면 유용할 것 같은 느낌이다. 

ㆍ 오버랩, 레이케스트, 스윕 등등에 쓰는것 (물리 시뮬레이션이 없는 충돌방식)

ㆍ 시뮬레이션 트리에 데이터가 들어가 있지 않아, 시뮬레이션을 하지 않을거면 성능이 더 좋다.

ㆍ 스윕이 뭔지 몰랐었는데, 쉽게 예를 들면 빗자루를 쓸다가 중간에 뭐가 막힌경우 턱!! 하고 멈추겠다 느낌이라 스윕이라 한다.

 

Physics Only

ㆍ 뭐 반대로 물리 시뮬레이션을 처리하는 충돌이겠다. 대신 위 쿼리에 대한건 사용할 수 없다고 한다

ㆍ 레이캐스트, 스윕, 겹침에는 사용할 수 없으며, 쿼리트리에 데이터가 들어가 있지 않다.

 

3번째칸에 있는건 1,2번 합친거겠고, 4번5번은 UE5에 들어와서 새로 생겼다고 한다.

설명 읽어보면 탐지+ Hit ---> 콜백 방식 뭐 이렇게 써있는데, 필요한 상황이 온다면 다시 읽어봐야겠다.

 

피직스와 관련된 다양한 컴포넌트들이 있다. 컨스트레인트 컴포넌트는 무게추? 같은걸 생각하면되는데 이것도 필요하다면 자세히 찾아보자

 

# 오브젝트 타입

ㆍ 충돌의 체널이라고 생각하면 된다. 스태틱매쉬(안움직임) 인지, 움직이는 동적인 매쉬인지, 폰인지.. 등등 기본적인것들이 정의되어 있다.

ㆍ PhysicsBody는 물리가 적용된 애들, Vehicle은 차량을 의미한다. 

ㆍ 필요하다면 프로젝트 세팅에서 추가해 줄 수도 있다.

 

# 콜리전 반응

ㆍ 바로 위에 체널들 별로 충돌을 어떻게 처리해 줄 것인가 옵션을 선택할 수 있다~!

ㆍ 위 Generate Overlap Events를 켜줘야 이벤트가 발생하니 잊지 말자.

 

 

# 충돌에 문제가 생긴다면...

첫번째로 내가 누군지를 보고                (콜리전 활성화됨 옵션, 피직스냐? 쿼리냐? 데이터 트리 다르면안댄다~)

두번째로 상대가 누군지를 보고             (상대의 체널이 어디일까?)

세번째로 콜리전 반응을 확인을 하자..   (어떻게 처리할건데?)

ㆍ 플레이어는 이렇게 되어있다! 위 박스는 폰과 블로킹을 하겠다고 했으니 이제 둘은 충돌하면 막힐것이다

 

ㆍ 하나라도 무시하고있다면 무시가된다.