Choose your operating system:
Windows
macOS
Linux
LineTraceByChannel 은 직선상에 콜리전 트레이스를 수행하여 트레이스에 히트한 첫 번째 오브젝트를 반환합니다. SingleLineTraceByChannel 구성 방법은 다음과 같습니다.
단계
-
블루프린트 일인칭 템플릿에 시작용 콘텐츠를 포함 시켜 프로젝트를 새로 만들고 엽니다.
-
FirstPersonBP/Blueprints 폴더에서 FirstPersonCharacter 블루프린트를 엽니다.
-
그래프에 우클릭 하고 Event Tick 노드를 검색하여 추가합니다.
그러면 트레이스가 매 프레임 실행됩니다.
-
실행 핀을 끌어 놓은 뒤 LineTraceByChannel 노드를 검색합니다.
-
Ctrl 키를 누르고 FirstPersonCamera 컴포넌트를 끌어 놓습니다.
바로 이 카메라에서부터 트레이스가 시작됩니다.
-
FirstPersonCamera 노드를 끌어 놓고, Get World Location 노드를 추가한 뒤, 트레이스 Start 에 연결합니다.
-
FirstPersonCamera 노드를 다시 끌어 놓고, Get World Rotation 노드를 추가합니다.
FirstPersonCamera위치에서 트레이스를 시작한 뒤, FirstPersonCamera 회전 값을 구하고 있습니다.
-
Get World Rotation 을 끌어 놓고 Get Forward Vector 를 추가한 뒤, 거기서 다시 끌어 놓고 Vector * Float 노드를 추가한 뒤 1500 라 설정합니다.
회전 값과 포워드 벡터를 구한 뒤 1500 (트레이스 길이)만큼 바깥쪽으로 확장시키고 있습니다.
-
Get World Location 을 끌어 놓고 Vector + Vector 노드를 추가한 뒤, 트레이스 노드의 End 에 아래와 같이 연결합니다.
FirstPersonCamera 위치를 받아 거기서부터 회전 값과 포워드 벡터에 따라 1500 유닛 확장시킵니다.
-
Trace 노드에서, Draw Debug Type 을 For One Frame 으로 설정합니다.
그러면 게임내 플레이 도중 라인 트레이스를 디버그 라인으로 확인할 수 있습니다.
-
트레이스의 실행 핀을 끌어 놓고 Print String 노드를 추가합니다.
-
Out Hit 핀을 끌어 놓고 Break Hit 를 검색한 뒤 Break Hit Result 노드를 추가합니다.
-
Break Hit Result 의 Hit Actor 핀을 끌어 놓고 To String (Object) 노드를 추가한 뒤 Print String 노드에 연결합니다.
클릭하면 이미지 원본을 확인합니다.
그러면 트레이스에 걸린 오브젝트를 화면에 디버그 출력해 줍니다.
-
컴파일 버튼을 클릭한 뒤, 에디터에서 플레이하고 레벨의 큐브를 바라봅니다.
일인칭 시점에서 탈출하여 트레이스 시야 각도를 확인할 수 있습니다.
트레이스가 큐브에 닿으면, 큐브가 화면에 출력됩니다.
최종 결과
위 예제는 제공된 트레이스 채널에 반응하도록 설정된 오브젝트를 전부 반환합니다만, 특정 오브젝트만 반환되도록 하고픈 경우가 있을 수 있습니다. 위 예제에서는 Actors to Ignore 핀을 사용하여 액터 배열을 받으면 트레이스에서 무시되도록 할 수 있는데, 이 경우 무시할 액터를 개별적으로 지정해 줘야 합니다.
LineTraceByObject 를 통해 지정된 ObjectType 만 반환되도록 할 수도 있습니다. 트레이스에 특정 오브젝트 세트만 포함되도록 하는 것이 가능합니다.