본문 바로가기
공부/Unreal Engine 4

[언리얼4] 라인 트레이싱

by MY블로그 2023. 11. 2.

시작지점과 끝지점을 지정하여 일직선의 라인을 그리는 방법을 정리 합니다.

1. 블루프린트 클래스 생성

레벨의 임의 위치에 라인의 시작지점, 끝지점, 그려질 라인의 블루프린트 클래스를 만들어 배치합니다.

 

시작지점과 끝지점을 구분하기 위해서 해당 지점들은 빌보드를 사용하여 이미지를 추가해 두었습니다.

*두개의 지점을 그리는 Line 객체는 단순히 아웃라이너에 인스턴스화 되어있으면 ok

 

2. 시작지점과 끝지점을 배열 변수에 저장

우선 블루프린트내에서 변수를 추가하고 해당 변수의 자료형을 위에서 생성한 BP_Point 형으로 지정하고

변수의 유형을 배열로 설정하여 줍니다.

 

생성이 완료되었다면 BeginPlay 이벤트 (프로그램 실행시 한번 실행)을 사용하고 Get All Actors Of Class 함수를 통해서 BP_Point의 형태로된 모든 클래스들을 BP Point(배열 변수)에 SET하여 저장합니다.

즉, 프로그램 실행 > BP_Point의 모든클래스를 탐색 > BP Point 배열변수에 저장

 

3. 시작지점과 끝지점 연결하기

2단계에서 BP Point 배열 변수에는 2개의 클래스가 저장되어져 있습니다.

배열의 시작은 0번부터 이므로 0번에는 아웃라이너에 배치된 BP_Point, 1번에는 BP_Point2가 저장됩니다.

 

BP Point(배열변수)를 Get(사본) 함수를 2개 생성하여 각각 0번과 1번의 GetActorLocation(객체의 위치)을

LineTraceForObjects 함수의 시작지점과 끝지점으로 설정하여 줍니다.

위의 함수들은 런타임중 매프레임 Line을 생성해야하므로 Tick 이벤트와 연결합니다.

LineTraceForObjects 함수에서 Object Type을 지정하고 Draw Debug Type을 For One Frame(매프레임) 으로 설정합니다.

 

추가적으로 단순하게 선만 그려지는것 외에 다양한 기능들이 함수내부에 마련되어있습니다.

테스트용으로 Out Hit Hit Actor를 사용하기위해서 레벨에서 움직이는 오브젝트(플레이어)가 그려진 선에 닿았을때

선에 닿은 오브젝트의 이름을 출력하도록 해봅니다.

여기서 특이하다고 생각한게 라인에 충돌했을때 시작지점부터 충돌한 지점까지는 붉은선으로 표시되고 충졸지점에 따로 추가적으로 표시가 생성 됩니다.

 

충돌지점 이후부터 끝지점까지는 초록색 선으로 표시되는데 다른 오브젝트가 초록색선에 닿더라도 충돌판정은 이루어지지 않습니다.

 

하나의 선에서 다수의 충돌을 판정하고자 한다면 MultiLineTrace 를 사용해야 한다고 합니다.

댓글