▣ .h, .cpp 파일에는 꼭 헤더를 추가해야 합니다.
▣ HoldStartTime:
키를 누르기 시작한 시점을 기록하는 변수입니다. GetWorld()->GetTimeSeconds()를 사용하여 게임이 시작된 후 경과된 시간을 가져옵니다.
이 값은 HandleInputStarted 함수에서 초기화됩니다.
IsShortActionTriggered:
짧은 누름 액션(EatFood) 또는 긴 누름 액션(UseMedicine)이 중복 실행되지 않도록 관리하는 플래그입니다.
HandleInputCompleted에서 초기화됩니다.
▣ ETriggerEvent::Started:
Q키를 누르는 순간 한 번만 호출됩니다. 이때, 누르기 시작한 시간을 HoldStartTime에 저장하고, IsShortActionTriggered를 초기화합니다.
ETriggerEvent::Completed:
Q키를 뗄 때 한 번만 호출됩니다. 이 이벤트는 HandleInputCompleted에서 처리됩니다.
▣ HandleInputStarted 역할:
키를 누르기 시작한 순간의 시간을 저장합니다.
HoldStartTime에 GetWorld()->GetTimeSeconds() 값을 저장하여, 입력을 얼마나 오래 유지했는지 계산할 수 있도록 준비합니다.
IsShortActionTriggered를 false로 설정하여 입력 상태를 초기화합니다.
InputActionInstance.GetElapsedTime():
사용되지 않았지만, 이 값은 입력이 눌려있는 시간(초)을 반환합니다. 사용하지 않는다면 제거해도 괜찮습니다.
▣ HandleInputCompleted역할:
Q키를 눌렀다 뗀 이후의 입력 지속 시간(HoldDuration)을 계산하여 적절한 액션(EatFood 또는 UseMedicine)을 실행합니다.
HoldDuration 계산:
키를 뗀 시점의 시간(GetWorld()->GetTimeSeconds())에서 HoldStartTime을 빼서 계산합니다.
조건 처리:
HoldDuration < 0.3f: 짧게 눌렀을 때 EatFood() 호출.
HoldDuration >= 0.3f: 길게 눌렀을 때 UseMedicine() 호출.
IsShortActionTriggered 사용:
두 액션이 동시에 실행되는 것을 방지합니다. true로 설정하여 동일한 입력에 대해 중복 호출을 방지합니다.
마지막 초기화:
IsShortActionTriggered는 항상 초기화하여, 이후 입력에서 정상 동작하도록 설정합니다.
▣ 전체 흐름
Q키를 누르면 HandleInputStarted가 호출되고, HoldStartTime을 저장하며 초기 상태를 설정합니다.
Q키를 떼면 HandleInputCompleted가 호출됩니다.
입력 지속 시간(HoldDuration)에 따라 EatFood() 또는 UseMedicine()가 호출됩니다.
IsShortActionTriggered로 중복 호출 방지.
입력 처리 후 상태를 초기화하여 다음 입력에 대비합니다.
'[ Unreal5 ] > - 언리얼엔진5 실습' 카테고리의 다른 글
언리얼엔진5 c++ Widget Texture 제거 (0) | 2024.12.02 |
---|---|
언리얼엔진5 뷰포트에서 마우스 커서 사라지는 버그 해결법 (0) | 2024.11.27 |
언리얼엔진5 c++ Sphere Trace (0) | 2024.11.25 |
언리얼엔진5 c++ LoadClass (0) | 2024.11.24 |
언리얼엔진5 c++ GEngine->AddOnScreenDebugMessage (0) | 2024.11.23 |
댓글