모바일 장치에서 자이로 센서를 사용하는 방법에 대해 알아본다.
자이로 센서가 무슨 기능을 하는지는 대부분 알고 있겠지만, 간단하게 정리하자면
장치가 얼마나 회전했는지 감지해내는 기능이다.
자세한 센서의 역할이나 역사를 알고 싶으면 아래 글을 참고하자. 필자는 잘 모르니까 아래 글 참고.
자이로스코프 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)
레이싱 게임의 처럼, 키보드 입력이 아니라 핸들을 돌리듯한 조작감을 제공하기 위해서는
자이로 센서의 입력은 필수다. 그 방법에 대해 알아보려고 한다.
C++
PlayerController 클래스 또는 해당 인스턴스를 받아 올 수 있는 곳에서 작업한다.
GetInputMotionState() 함수를 호출해서 현재 장치의 모션 상태를 받아와야한다.
함수의 정의는 아래 그림과 같다.
함수를 호출 할 때, 출력으로 받을 백터 4개를 줘야 한다.
"Tilt" 가 우리가 원하는 자이로 센서의 응답값이다. (나머지 값은 잘 모르겠다. 궁금하면 하나씩 테스트 해보자.)
필자는 아래와 같은 코드를 Tick() 함수에 적어보았다.
void AGameController::Tick(float DeltaSeconds)
{
Super::Tick(DeltaSeconds);
FVector Tilt, _, __, ___;
GetInputMotionState(Tilt, _, __, ___);
const FRotator TiltRot = FRotator(
Tilt.X * 57.2957795 - 90.0F,
Tilt.Y * 57.2957795 - 90.0F,
Tilt.Z * 57.2957795 - 90.0F
);
}
응답값은 라디안으로 나온다. 따라서 라디안 값을 각도로 바꿔주는 일을 해야한다.
FMath::RadiansToDegrees() 함수를 사용해도 좋다.
안드로이드 휴대폰에서 실행해보면, 매 Tick 마다 현재 휴대폰의 각도가 출력되는것을 볼 수 있다.
'볼봇의 코딩 생활 > 언리얼한 엔진' 카테고리의 다른 글
UE4 구글 플레이 게임 업적 연동 하기 (0) | 2020.12.18 |
---|---|
UE4 안드로이드 무선 디버깅 & 디플로이 (0) | 2020.12.13 |
[UE4] JSON 데이터 파싱 하기 (0) | 2020.12.08 |
선택된 사운드 웨이브를 임포트 중인 사운드의 템플릿으로 사용할까요? 에 대해 (0) | 2020.11.21 |
UE4 스팀 VR 자동 실행 방지하기 (0) | 2020.11.21 |