if (ray에 Hit된 액터 있음) && (isHit == False)if (ray에 Hit된 액터 없음) && (isHit == True)


고쳐야 할 부분이 너무 많다. UI 두개 중 하나는 RayTrace로 구현했는데 다른 하나(progress bar)는 트리거 오버랩으로 구현한 거라 수정해야 한다. 원래는 유튜브 동영상은 참고만 하고 현재 내 프로젝트에 맞춰 구현하려고 했는데 오류가 너무 많이 나서 일단 다 따라하기만 했다. 근데 동영상도 이해 안된 부분이 많고... 뷰포트에서 UI 삭제할 때 왜이렇게 오류가 많이 나는지 모르겠다ㅠㅠ 블루프린트끼리 통신하는 법도 어렵구... 위젯 이미지랑 텍스트도 클래스마다 다르게 설정하고 싶은데 어떻게 해야할지 모르겠다. 유니티에선 그냥 SetActive랑 UpdateText하면 됐었는데... 언리얼 짱이라고 했던 거 취소야 ಥ__ಥ수정 방향
Progress bar 공부
(https://www.youtube.com/watch?v=SD6RuyaqO9c&t=908s)
Enable Input 호출하고 progress bar 위젯 생성 및 뷰포트에 추가Disable Input 호출하고 위젯 제거
Enable Input: 액터에서 키보드 입력 받는 경우 필요



Gate
? 실행 흐름을 제어하는데 사용되는 노드
Enter에서 입력 신호를 받아들이고, Gate의 현재 상태(Open/Close)에 따라 그 신호를 Exit로 출력할지 말지 결정

RetriggeralbeDelay
: MaxHoldTime 전에 상호작용 키를 떼면, 다시 상호작용을 시도했을 때 0으로 초기화되도록 하는 함수...?
MaxHoldTime
: 플레이어가 상호작용 키를 누르고 있어야하는 시간 (인스턴스마다 편집 가능하도록 설정)





if (isHeld && isHit)인 경우만 Update Timer




현재 상황
일단은 이렇게까지 오류 없이 짜보긴 했는데... 잘 짠 건진 모르겠다 🥲
형변환하면 블루프린트가 항상 로드되어 비용이 올라간다고 하는데 BP_ThirdPerson에 형변환해서 가져온 isHit 변수를 틱이벤트마다 참조해도 괜찮은걸까...? Enable Input도 지금 isGenerate==false 일 때 프레임마다 실행되고 있구... bool 변수랑 branch도 너무 많아서 맘에 안든다ㅠㅠ!
하 그치만 이게 내 최선이야...
게이지 0으로 초기화되는 것이 아닌 일정 속도로 감소되도록
: StopTimer 호출 → Set TimeHeld
if (isHit == false) or (isHeld == false){
StopTimer();
while (timeHeld !=0)
timeHeld -= x;
}
수리 완료하면 아군 활성화되고 아군 영입할 수 있도록