UE5) 스와이프 기능
스와이프 기능을 구연해보자
화면을 오른쪽이나 왼쪽으로 쓸었을 때 할 동작을 정의해본다.
구현 아이디어 : 터치가 시작된 지점과 터치가 끝난 지점의 좌표의 X값을 가지고 왼쪽으로 쓸었는지 오른쪽으로 쓸었는지 구분
위젯 내부 함수 오버라이드
스와이프를 인식할 위젯을 설정하고, 내부 함수를 덮어쓰자.
virtual FReply NativeOnTouchStarted(const FGeometry& InGeometry, const FPointerEvent& InGestureEvent) override;
virtual FReply NativeOnTouchMoved(const FGeometry& InGeometry, const FPointerEvent& InGestureEvent) override;
virtual FReply NativeOnTouchEnded(const FGeometry& InGeometry, const FPointerEvent& InGestureEvent) override;
터치가 시작되었을 때
FReply UMyWidget::NativeOnTouchStarted(const FGeometry& InGeometry, const FPointerEvent& InGestureEvent)
{
SwipeStartLoc = UKismetInputLibrary::PointerEvent_GetScreenSpacePosition(InGestureEvent);
SwipeEndLoc = SwipeStartLoc;
return FReply::Handled();
}
터치 시작 좌표를 저장하자.
터치가 끝났을 때
FReply UMyWidget::NativeOnTouchEnded(const FGeometry& InGeometry, const FPointerEvent& InGestureEvent)
{
UE_LOGFMT(LogTemp,Warning,"NativeOnTouchEnded");
SwipeEndLoc = UKismetInputLibrary::PointerEvent_GetScreenSpacePosition(InGestureEvent);
auto delta = SwipeStartLoc - SwipeEndLoc;
//왼쪽
if(delta.X>0)
{
UE_LOGFMT(LogTemp,Warning,"왼쪽 스와이프 감지됨.");
}
//오른쪽
else if(delta.X<0)
{
UE_LOGFMT(LogTemp,Warning,"오른쪽 스와이프 감지됨.");
}
return FReply::Handled();
}
터치 시작점과의 차이를 가지고 오른쪽 스와이프인지 왼쪽 스와이프인지 구분해서 처리하면 된다.
만약 꾹 누른체로 이동중일때 무엇인가 하고 싶다면, NativeOnTouchMoved 함수를 이용하면 된다.