-
240415~240416 상호작용 UI 만들기(3)기록 2024. 4. 21. 20:48
목표 : 상호작용을 알려주는 UI를 거리에 따라 다른 UI가 되도록 만드는 것
- 위젯 만들기
- 씬 컴포넌트
- 위젯 붙이기
- 거리에 따라 어떤 UI를 띄울지 결정하기
- 위젯의 Color를 바인딩하여 어떤 캐릭터(tag)냐에 따라 색상결정하기, 추가 옵션 만들기
쪼꼬미 목표 1 : 어떤 캐릭터냐에 따라 위젯을 다르게 표시하기,
쪼꼬미 목표 2 :한가지 캐릭터에만 띄우는 옵션 추가하기
1. 위젯에서 디테일 - 외형 - 컬러 및 오파시티에 바인딩을 생성한다.
Tags.Add(FName("Cody"));
캐릭터에 태그를 미리 설정해 두었다.
2. 폰(캐릭터)의 태그 중 원하는 태그(Cody)가 있다면 초록색, 아니라면 파란색으로 위젯을 변경하도록 설정한다.
결과
어떤 캐릭터냐에 따라 상호작용 위젯의 생상이 다르게 적용된다.
1. 특정플레이어만 상호작용이 가능한 경우, 특정 플레이어에게만 상호작용UI가 보일 수 있도록 설정하는 bool값을 만들었다.
// UInteraction.h UPROPERTY(EditAnywhere, Category = "UI") bool bOnlyMay; UPROPERTY(EditAnywhere, Category = "UI") bool bOnlyCody;
2. 특정 캐릭터만 true인 경우 나머지 캐릭터의 태그를 가지고 있는 pawn에게는 위젯UI를 안보이게 한다.
bool UInteractionUIComponent::SetVisibilityBasedOnTage(APawn* PlayerPawn) { if (true == bOnlyMay && false == bOnlyCody) { const TArray<FName>& Tags = PlayerPawn->Tags; // 태그를 순회하며 "Cody" 태그 확인 for (const FName& Tag : Tags) { if (Tag == FName("Cody")) { SetVisibility(false, true); return true; // "Cody" 태그를 찾았을 경우 비활성화 } } } if (false == bOnlyMay && true == bOnlyCody) { const TArray<FName>& Tags = PlayerPawn->Tags; // 태그를 순회하며 "May" 태그 확인 for (const FName& Tag : Tags) { if (Tag == FName("May")) { SetVisibility(false, true); return true; // "May" 태그를 찾았을 경우 비활성화 } } } return false; }
결과
'기록' 카테고리의 다른 글
240418 플레이어 RPC를 사용하여 사이즈 변경 동기화 (0) 2024.04.21 240418 플레이어 오프셋 변경 (0) 2024.04.21 240415~240416 상호작용 UI 만들기(2) (0) 2024.04.21 240415~240416 상호작용 UI 만들기(1) (0) 2024.04.21 240412 밀린 기록 Layered Blend Per Bone (0) 2024.04.16