Refactor Trace Under Crosshairs
기존 코드에 겹치는 내용이 존재하므로 리팩토링 작업을 해주자.
먼저 기존 TraceUnderCrosshiars 함수에 인풋 매개 변수로 FVector 참조 변수를 추가해주었다.
그리고 해당 함수를 통해 OutHitLocation을 저장해주자.
기본은 End 즉 끝점이고, 아니면 히트한 위치이다.
그리고 GetBeamEndLocation 함수를 위 내용을 토대로 리팩토링 해주자.
기본적으로 히트 위치는 Crosshiar의 트레이스하여 히트한 위치일 것이다.
아니면 기존 끝점에 대한 위치이다.
이 끝점에 대한 값 설정을 위해 추가적으로 FVector& OutBeamLocation 인풋 매개 변수를 추가해준 것이다.
이후 2번째 트레이스로 총기 위치부터 시작한 트레이스 내용을 그대로 사용해주면 된다.
추가적으로 수정해준 부분이 있다.
지금 상태에서 여러발 총기를 발사했을 때, 몇 발을 실패할 수도 있는 문제에 대해서이다.
이는 두 번째 트레이스는 총기 위치부터 시작하는 트레이스에 대한 문제이다.
첫 번째 트레이스는 크로스헤어 월드 좌표를 토대로 5000만큼 앞으로 가지만,
두 번째 트레이스는 총기 위치에서 첫 번쨰 트레이스 위치로 이동하게 된다.
이러면 5000만큼 훨씬 짧고, 첫 번째 라인트레이스가 충돌한 표면까지만 이동할 뿐 그 이상으로 나아가지 않을 수 있다.
따라서 두 번째 트레이스는 벽에 완전히 도달하지 않는 문제가 생기게 되는 것이다.
이를 해결하기 위해 두 번째 트레이스에 대해 길이를 조금 확장시켜줄 필요가 있다.
새롭게 총기 위치부터 OutBeamLocation 까지 거리를 얻고, 이에 대해 1.25배를 곱한 값을 TraceEnd 값으로 설정해주자.
'Unreal > Udemy 강의' 카테고리의 다른 글
Unreal Engine 4 C++ The Ultimate Shooter Course Section 5-10 (0) | 2024.08.22 |
---|---|
Unreal Engine 4 C++ The Ultimate Shooter Course Section 5-9 (0) | 2024.08.22 |
Unreal Engine 4 C++ The Ultimate Shooter Course Section 5-7 (0) | 2024.08.22 |
Unreal Engine 4 C++ The Ultimate Shooter Course Section 5-6 (0) | 2024.08.21 |
Unreal Engine 4 C++ The Ultimate Shooter Course Section 5-5 (0) | 2024.08.21 |