라인 트레이싱 By Channel
이제 얻은 위치와 회전 을 토대로 라인트레이스를 해볼 차례이다.
이를 위해 프로젝트 세팅에서 총알에 대한 트레이스 채널을 생성해주자.
트레이스 채널외에도 오브젝트 채널이 존재하는데,
오브젝트 채널은 말그대로 오브젝트 자체에 채널을 달 수 있도록 해주는 것이고 트레이스 채널은 트레이스 라인에 따라 반응을 어떻게 할 지 정하게 되는 것이다.
채널을 만들고 아래 Preset을 통해 기본적인 세팅을 설정할 수 있다.
해당 타입을 더블 클릭하면 위와 같이 프로필이 나오고, 각 트레이스 타입과 오브젝트 타입에 대해 어떻게 반응할 건지 체크하는 것이 가능하다.
총알 트레이스 채널을 만들 때 기본적으로 모든 것에 대해 Blocked 되도록 하였기에 여기서 몇 가지 간단하게 설정을 바꿔준다.
NoCollsion의 경우 이름과 같이 Ignore 되어야 할 것이고, OverlapAll의 경우 이름과 같이 Overlpay 되어야 할 것이다.
이에 InvisibeWall과 InvisibleWallDynamic 값도 보이지 않는 값이기에 Ignore 되도록 해주었다.
트레이스 채널을 사용하기에 앞서 DrawDebugPoint 함수를 통하여 현재 화면을 다시 출력해보았다.
그리고 트레이스 채널을 사용하기 위해 끝점에 대한 정보가 필요하므로 이에 대한 변수를 선언했다.
최대 거리를 위해서 헤더에 MaxRange를 1000으로 설정하고, 해당 값과 Rotation.Vector() 값을 곱하여 회전 방향에 대한 크기를 얻도록 하였다.
이제 해당 값을 Location 값에 더해주면 끝점의 값이 된다.
이제 라인트레이스를 적용해보자.
사용할 함수는 다음과 같다.
첫 번째 값인 FHitResult의 경우 아웃 파라미터 이므로 따로 선언해서 할당해주면 된다.
start와 end 값은 우리가 사전에 설정한 Location과 End의 값을 할당해주자.
TraceChannel의 경우가 다소 복잡한데, 언리얼 해당 프로젝트의 Config 폴더로 가서 DefaultEngine 파일을 VScode나 메모장 형태로 열어서 Bullet이 어느 채널에 속하는지 체크해야 한다.
나머지 값은 디폴트 값이 존재하여 따로 할당하지 않아도 문제는 없다.
그리고 기존의 DrawDebugPoint 함수를 트레이스 채널을 체크한 이후에 선언해주자.
그리고 해당 함수의 위치를 이제 히트한 위치로 바꿔주고 다시 컴파일해보자.
이제 정해진 사격 거리 내에 맞은 위치에 대해 point가 보이게 된다.
'Unreal > Udemy 강의' 카테고리의 다른 글
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-20 (0) | 2024.05.05 |
---|---|
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-19 (0) | 2024.05.04 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-17 (0) | 2024.05.04 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-16 (0) | 2024.05.03 |
Unreal Engine 5 - C++ 개발자: C++ 학습하고 비디오 게임 제작하기 Section 6-15 (0) | 2024.05.03 |