Unity & C#

Gyroscope Input (Unity Remote)

coucou3 2020. 5. 10. 16:28
반응형

 

Unity Remote on Appstore

 

 

 

Unity Play 모드에서 Touch 이외의 Input을 테스트하는 것에는 한계가 많다.

예를 들어 Editor에서는 Gyroscope Input을 입력할 수 없다. 그렇다고 매번 기기로 빌드를 할 수도 없는 노릇.

이때 사용할 수 있는 것이 Unity Remote 앱이다.

 

 

Unity Remote

https://docs.unity3d.com/kr/2018.4/Manual/UnityRemote5.html

Unity 리모트 - Unity 매뉴얼

Unity 리모트는 Android, iOS 및 tvOS 앱을 개발할 때 도움이 되도록 만든 다운로드 가능한 앱입니다. 이 앱은 Unity 에디터에서 프로젝트를 플레이 모드로 실행할 때 Unity와 연결됩니다. 에디터의 영상 출력은 기기의 화면으로 전송되고, 모든 입력은 Unity에서 실행 중인 프로젝트로 다시 전송됩니다. 따라서 테스트할 때마다 전체를 빌드할 필요 없이 게임이 타겟 기기에서 실제로 어떻게 보여지고 작동하는지 확인할 수 있습니다.

docs.unity3d.com

Unity 리모트는 Android, iOS 및 tvOS 앱을 개발할 때 도움이 되도록 만든 다운로드 가능한 앱입니다. 이 앱은 Unity 에디터에서 프로젝트를 플레이 모드로 실행할 때 Unity와 연결됩니다. 에디터의 영상 출력은 기기의 화면으로 전송되고, 모든 입력은 Unity에서 실행 중인 프로젝트로 다시 전송됩니다. 따라서 테스트할 때마다 전체를 빌드할 필요 없이 게임이 타겟 기기에서 실제로 어떻게 보여지고 작동하는지 확인할 수 있습니다.

 

Play store/App store에서 기기에 설치할 수 있다.

 

대기중인 Unity Remote

 

 

 

PC에 USB 연결 후 앱을 실행하면, Editor에서 Play 모드 진입시 자동으로 연동된다.

 

Editor와 UnityRemote

 

Editor의 Game 창이 그대로 UnityRemote 앱을 통해 기기에 나타난다.

 

 

 

Gyroscope Test

이제 UnityRemote를 통해 기기의 Gyro 센서 작동을 테스트해보자

다른 Input과 마찬가지로 UnityEngine.Input에서 Gyro Input을 받아올 수 있다.

1
2
3
4
5
6
7
8
9
10
11
public class GyroscopeInput : MonoBehaviour
{
    public Text _gravity, _attitude, _rotationRate, _userAcceleration;
    public Transform cubeTransform;
 
 
    private void Start()
    {
        Input.gyro.enabled = true;
    }
}
cs

 

우선 기기의 gyro 기능을 활성화시켜준다.

Test를 위해 각종 input을 보여줄 UI Text와 Cube Object 하나를 생성했다.

 

 

Gyroscope Variables은 다음과 같다. (https://docs.unity3d.com/kr/530/ScriptReference/Gyroscope.html)

attitude장치의 attitude를 반환합니다.
enabled해당 자이로스코프(gyroscope)의 상태(status)를 설정하거나 얻어옵니다.
gravity장치의 참조 프레임(reference frame)단위로 표현되는, 중력 가속도 벡터를 반환합니다.
rotationRate장치의 자이로스코프(gyroscope)에 의해 측정되는, 회전율을 반환합니다.
rotationRateUnbiased장치의 자이로스코프(gyroscope)에 의해 측정되는 수평 회전율을 반환합니다.
updateInterval자이로스코프(gyroscope)의 시간단위 간격(interval)을 설정하거나 받아옵니다.
userAcceleration사용자가 장치에 전달하는 가속도를 반환합니다.

 

 

Gyro Input을 출력하고, attitude를 Cube Object의 transform.rotation에 넣어 실제로 회전하는지 테스트한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class GyroscopeInput : MonoBehaviour
{
    ...
 
    private void Update()   
    {
        var gravity = Input.gyro.gravity;
        var attitude = Input.gyro.attitude;
        var rotationRate = Input.gyro.rotationRate;
        var userAcceleration = Input.gyro.userAcceleration;
 
        _gravity.text = "gravity : " + gravity.ToString();
        _attitude.text = "attitude : " + attitude.ToString();
        _rotationRate.text = "rotationRate : " + rotationRate.ToString();
        _userAcceleration.text = "userAcceleration : " + userAcceleration.ToString();
        
        cubeTransform.rotation = Quaternion.Euler(attitude.eulerAngles);
    }
}
cs

 

 

 

 

 

 

잘 돌아간다.

 

 


 

Unity Remote에서 지원하는 기능은 아래와 같다.

기기 및 기능 지원

Unity 리모트는 현재 Android 기기(Windows 및 OS X에서 USB 연결을 통해 지원)와 iOS 기기(OS X 및 iTunes가 설치된 Windows에서 USB 연결을 통해 iPhone, iPad, iPod 터치, Apple TV 지원)를 지원합니다.
실행 중인 Unity 프로젝트의 게임 뷰는 기기 화면에 복제되지만 프레임 속도가 더 낮습니다. 기기에서 수행되는 다음 입력 데이터는 에디터로 다시 스트리밍됩니다.

•터치 및 스타일러스
•입력가속
•센서자이로스코프기기
•카메라
•스트림컴파스
•GPS
•조이스틱 이름 및 입력

 

 

설정은 Edit > Project Settings > Editor 탭에서 가능하다.

 

 

 

 

반응형