Trace for Widget
위젯이 항상 보이는건 바람직하지 않다.
총기를 가르켰을 때만 위젯이 뜨도록 변경해보자.
이에 앞서서 현재 위젯이 총기를 아에 가리고 있으므로 위젯을 조금 위로 올려주자.
그리고 우선 위젯이 보이지 않도록 세팅해주자.
위젯은 플레이어가 가르켰을 때만 활성화되어야 한다.
Trace를 이용하여 위젯을 가리킨 것을 판별해보자.
기존 크로스헤어를 통해 Trace를 하여 충돌 여부를 판별하게 될 것이다.
이는 ShooterCharacter 클래스에서 작업하게 된다.
우선 기존 Viewport 사이즈를 가져와야 한다.
이후 이를 토대로 크로스헤어의 위치를 계산해준다.
이는 기존 GetBeamEndLocation() 함수에서도 작성했던 중복되는 내용이다.
이후 크로스 헤어의 위치를 월드 좌표로 변환하고 이를 토대로 트레이스를 하게 된다.
만약 충돌로 막히는 것이 있다면 true를 반환하게 된다.
ShooterCharacter 클래스에서 PickupWidget에 대해 접근할 수 있어야하므로,
해당 변수에 대한 Getter 함수를 작성해주자.
그리고 기존 크로스헤어를 통한 트레이스 함수는 매번 검토해주어야 하므로 Tick 함수내에 호출해주자.
충돌 여부를 판별하고 존재한다면, Cast 함수를 통해 Item 클래스에 대한 변수를 얻고 해당 함수를 통해 PickUpWidget에 접근하여 비활성화 했던 위젯을 다시 활성화해주자.
그 다음으로 총기에 대한 CollisionBox를 기본적으로 모든 채널에 대해 무시하도록 설정해주고,
ECC_Visibility에대해서만 Block 되도록 세팅해주자.
이제 컴파일하고 크로스헤어를 총기 부근에 대면 위젯이 생기는 것을 볼 수 있다.
'Unreal > Udemy 강의' 카테고리의 다른 글
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-8 (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 |
Unreal Engine 4 C++ The Ultimate Shooter Course Section 5-4 (0) | 2024.08.21 |