나를 힘들게 한 bool변수
나를 헷갈리게 한 bool변수
사실 이 어려움의 원인은 역시 나로부터 있다.
사람들과 나의 현 진행상황을 공유하며 피드백을 얻은 결과
내가 생각보다 너무 어렵게 접근하여 풀어가고 있다는 것을 알 수 있었다.
그냥 door-> 이런식으로 접근해도 되었던것같은데 delegate를 사용한다던가
구조 짠 형태가 아쉽지만, 그래도 이번 기회를 통해서 delegate 함수의 사용법도 익힐 수 있었고,
다음 번에 다른 것 구조를 짤 때는 전보다 성장해 있을것이다..
이전 게시물에서는 버튼을 누르면 문을 열고 닫을 수 있도록 하는 것이었고
이번에는 스테이지가 끝났을 때만 문을 열고 닫을 수 있도록 설정하는 것이다.
다른 클래스의 Stage 정보 ---> Door Button ----> Door
이런 형태로 정보가 전달된다.
public:
class ADoors* door;
//델리게이트 받으면 버튼 활성화 되도록
bool bCanButtonClicked;
//문이 한번 열고 닫혔었는지
bool bOpened;
bool변수를 활용해서 조건을 나누어 원하는 함수를 실행할 수 있도록 해주었다.
일단 델리게이트 받으면 플레이어가 버튼을 눌렀을 때 버튼이 활성화 되도록 해주기 위한 bool
그리고 스테이지가 클리어 된 후 문이 한번 열리고 닫혔는지 확인하기 위한 bool
이렇게 두가지 변수를 사용해주었다.
ARoomManager* rm = Cast<ARoomManager>(UGameplayStatics::GetActorOfClass(GetWorld(), ARoomManager::StaticClass()));
rm->stageClearDele.AddUFunction(this, FName("CheckClearStage"));
beginplay에서 델리게이트 함수 바인딩 해주면
void ADoorButton::CheckClearStage()
{
UE_LOG(LogTemp, Warning, TEXT("CheckClearStage Function"))
bCanButtonClicked = true;
}
여기서는 버튼 활성화 여부에 대한 변수만 체크해주고
Overlap되었을 때 문 여는 함수를 호출하도록 해주었다.
Overlap이 되는 조건은 bCanButtonClicked가 true일 때라고 한 번 더 if문으로 묶어주었다.
가장 복잡했던 부분은 역시 이 조건을 만드는 것
void ADoorButton::ReportOpen()
{
UE_LOG(LogTemp, Warning, TEXT("ReportOpen!!"))
openDoorDele.Broadcast();
if(bOpened == false)//한번 열렸다.
{
bOpened = true;
}
else
{
bOpened = false;
bCanButtonClicked = false;
}
}
이렇게 보니까 너무 간단해보이지만.
이걸 완성하기 까지 몇시간이나 잡혀있었는지..
스스로에게 화가 얼마나 많이 났는지.. 모른다..
너무 답답했따..!!
어떤 조건을 만족했을 때 문을 열고 닫을지 구성을 몇번이나 바꿔보고
식도 바꿔보고, true false 도 계속 바꿔보기도 했다.
그리고 난잡해진 식을 다시 깔끔하게 정리하고 최적화 한 것이다!
이제 하나 더 남았다.
스테이지가 클리어 됐을 때 스테이지에 설치된 모든 문들이 한번에 열리도록 해야하는데
현재 한 개만 열리는 상태이므로 이 부분을 수정해줘야한다!
이 글을 작성한 날 해결했지만 이미 프로그래머스 풀이들도 업로드 예정에 있기 때문에 아마 며칠 뒤에 업로드하지 않을까 생각한다. 사람들이 얼마나 보겠어? 싶지만...ㅠ
문에 얼마동안 잡혀있는지 아찔하지만 그래도 뿌듯하긴 하다.
내적 비명 / (=____=) /
다음 편에 계속 >>>>
'언리얼엔진 개발 > VR' 카테고리의 다른 글
[UnrealEngine5] VR 나사 돌리기 만들기(2) (1) | 2023.05.12 |
---|---|
[UnrealEngine5] VR 나사 돌리기 만들기(1) (2) | 2023.05.11 |
[UnrealEngine5]버튼을 누르면 문 열고 닫기 C++ (4) (0) | 2023.04.28 |
[UnrealEngine5]버튼을 누르면 문 열고 닫기 C++ (2) (0) | 2023.04.24 |
[UnrealEngine5]버튼을 누르면 문 열고 닫기 C++ (1) (0) | 2023.04.23 |