본문 바로가기

강동새싹언리얼수업/언리얼

231123 LineTrace

BP_Player에 Line Trace를 실험한다.

실험을 위해 Projects설정에서 Object와 Trace의 설정을 해야한다.

LineTrace는 물리적현상이라 Block으로 설정해야한다. 프리셋은 오버레이로 한다.

 

Line Trace For Object

 

 

Sphere Trace By Channel

Line

 

Box Trace By Channel

 

 

 

 

 

 

 

 

 

TraceByChannel 은 직선상에 콜리전 트레이스를 수행하여 트레이스에 히트한 첫 번째 오브젝트를 반환합니다. SingleLineTraceByChannel 구성 방법은 다음과 같습니다.

단계

  1. 블루프린트 일인칭 템플릿에 시작용 콘텐츠를 포함 시켜 프로젝트를 새로 만들고 엽니다.
  2. FirstPersonBP/Blueprints 폴더에서 FirstPersonCharacter 블루프린트를 엽니다.
  3. 그래프에 우클릭 하고 Event Tick 노드를 검색하여 추가합니다.그러면 트레이스가 매 프레임 실행됩니다.
  4. 실행 핀을 끌어 놓은 뒤 LineTraceByChannel 노드를 검색합니다.
  5. Ctrl 키를 누르고 FirstPersonCamera 컴포넌트를 끌어 놓습니다.바로 이 카메라에서부터 트레이스가 시작됩니다.
  6. FirstPersonCamera 노드를 끌어 놓고, Get World Location 노드를 추가한 뒤, 트레이스 Start 에 연결합니다.
  7. FirstPersonCamera 노드를 다시 끌어 놓고, Get World Rotation 노드를 추가합니다.FirstPersonCamera위치에서 트레이스를 시작한 뒤, FirstPersonCamera 회전 값을 구하고 있습니다.
  8. Get World Rotation 을 끌어 놓고 Get Forward Vector 를 추가한 뒤, 거기서 다시 끌어 놓고 Vector * Float 노드를 추가한 뒤 1500 라 설정합니다.회전 값과 포워드 벡터를 구한 뒤 1500 (트레이스 길이)만큼 바깥쪽으로 확장시키고 있습니다.
  9. Get World Location 을 끌어 놓고 Vector + Vector 노드를 추가한 뒤, 트레이스 노드의 End 에 아래와 같이 연결합니다.FirstPersonCamera 위치를 받아 거기서부터 회전 값과 포워드 벡터에 따라 1500 유닛 확장시킵니다.
  10. Trace 노드에서, Draw Debug Type 을 For One Frame 으로 설정합니다.그러면 게임내 플레이 도중 라인 트레이스를 디버그 라인으로 확인할 수 있습니다.
  11. 트레이스의 실행 핀을 끌어 놓고 Print String 노드를 추가합니다.
  12. Out Hit 핀을 끌어 놓고 Break Hit 를 검색한 뒤 Break Hit Result 노드를 추가합니다.
  13. Break Hit Result 의 Hit Actor 핀을 끌어 놓고 To String (Object) 노드를 추가한 뒤 Print String 노드에 연결합니다.클릭하면 이미지 원본을 확인합니다.
  14. 그러면 트레이스에 걸린 오브젝트를 화면에 디버그 출력해 줍니다.
  15.  
  16. 컴파일 버튼을 클릭한 뒤, 에디터에서 플레이하고 레벨의 큐브를 바라봅니다.일인칭 시점에서 탈출하여 트레이스 시야 각도를 확인할 수 있습니다.
  17. 트레이스가 큐브에 닿으면, 큐브가 화면에 출력됩니다.

최종 결과

위 예제는 제공된 트레이스 채널에 반응하도록 설정된 오브젝트를 전부 반환합니다만, 특정 오브젝트만 반환되도록 하고픈 경우가 있을 수 있습니다. 위 예제에서는 Actors to Ignore 핀을 사용하여 액터 배열을 받으면 트레이스에서 무시되도록 할 수 있는데, 이 경우 무시할 액터를 개별적으로 지정해 줘야 합니다.

LineTraceByObject 를 통해 지정된 ObjectType 만 반환되도록 할 수도 있습니다. 트레이스에 특정 오브젝트 세트만 포함되도록 하는 것이 가능합니다.

'강동새싹언리얼수업 > 언리얼' 카테고리의 다른 글

231127 DrawDebugSphere() and HitResult  (0) 2023.11.28
231127 라인트레이스  (0) 2023.11.27
231125 205 특강  (2) 2023.11.25
231123 Widget in Actor C++  (0) 2023.11.24
211124 LineTrace C++  (1) 2023.11.24