ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 240415~240416 상호작용 UI 만들기(3)
    기록 2024. 4. 21. 20:48

    목표 : 상호작용을 알려주는 UI를 거리에 따라 다른 UI가 되도록 만드는 것

    1. 위젯 만들기
    2. 씬 컴포넌트 
      1. 위젯 붙이기
      2. 거리에 따라 어떤 UI를 띄울지 결정하기
    3. 위젯의 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;
    }

    결과

     

     

    댓글

Designed by Tistory.