[UE4] LineTraceMulti, LineTraceMultiForObjects (LineTrace by Channel)
💡 LineTraceMulti
Line Trace Multi의 종류 중, LineTraceMulti 와 LineTraceMultiForObjects 를 사용해보았다.
LineTraceMulti는 Channel 값을 지정하여 충돌을 처리하고, ForObjects는 그려진 Line에 충돌된 모든 객체를 배열(HitResults)로 반환해준다.
여러 개의 큐브를 겹쳐서 충돌 결과를 살펴보면,
LineTraceMulti는 처음 충돌된 하나의 큐브에만 충돌반응을 일으키고, LineTraceMultiForObjects는 겹쳐있는 모든 큐브에 충돌반응을 일으켰다.
사실상 LineTraceMulti의 Channel로 충돌하는것은 LineTraceSingle과 비슷하게 구현된다.
Channel을 이용한 Multi Trace는 첫 블록을 포함하여 Trace 범위에 포함되는 모든 객체의 overlap을 반환한다.
이를 쉽게 설명하면 앞에 Overlap 객체들이 있다면 해당 객체들을 Overlap 충돌하며 뚫고 지나간 뒤, Block 충돌되는 객체에 Hit 된다는 것이다. 이러한 원리를 이용하면 총알을 발사하여 유리창을 전부 깨고 벽뒤에 부딪혀 멈추는 등의 기능을 구현할 수 있다!
오브젝트 타입은 Overlap은 체크되지 않고 Block만 전부 체크된다.
이를 테스트해보기 위해 얇은 큐브를 Line Trace앞에 하나 더 생성하고, 콜리전 프리셋을 OverlapAllDynamic으로 설정한 뒤, Generate Overlap Event를 활성화하여 배치하였다.
실행 결과, 맨 앞에 큐브는 Overlap이 체크되고 뒤에있는 큐브에서 Block되어 충돌이 멈춰있는 것을 확인할 수 있었다.
참조
https://docs.unrealengine.com/4.27/ko/InteractiveExperiences/Tracing/Overview/
트레이스 개요
언리얼 엔진 4 의 트레이스 시스템 개요입니다.
docs.unrealengine.com