Gyroscope Input
Gyroscope Camera
모바일 디바이스의 입력 중 하나인 자이로는 모바일 기기의 기울임, 가속 등을 가져오는 기능이다.
이를 이용해 물체의 기울임/회전 등을 수행할 수 있다.
Unity의 Gyro는 Input.Gyro
를 이용해 받아올 수 있다.
SystemInfo.supportGyroscope
를 이용해 디바이스가 자이로를 사용할 수 있는 디바이스인지 확인한 후 자이로 입력을 킨다.
private Gyroscope _gyro;
if(SystemInfo.supportsGyroscope
{
_gyro = Input.gyro;
_gyro.enabled = true;
}
Input.gyro에서는 다음과 같은 입력을 받아올 수 있다.
이들 중 움직임에 관한 인풋은 다음과 같다.
public class ManageCamera : MonoBehaviour {
GameObject camParent;
void Start () {
camParent = new GameObject("CamParent");
camParent.transform.position = this.transform.position;
this.transform.parent = camParent.transform;
Input.gyro.enabled = true;
}
void Update () {
camParent.transform.Rotate(0, -Input.gyro.rotationRateUnbiased.y, 0);
this.transform.Rotate(-Input.gyro.rotationRateUnbiased.x, 0, 0);
}
}
public class MarklessAR : MonoBehaviour
{
public Text text;
private bool gyroCheck;
private Gyroscope gyro;
private GameObject Container;
private Quaternion rot;
void Start()
{
Container = new GameObject("Container");
Container.transform.position = transform.position;
transform.SetParent(Container.transform);
gyroCheck = GyroCheck();
}
private bool GyroCheck()
{
if(SystemInfo.supportsGyroscope){
gyro = Input.gyro;
gyro.enabled = true;
Container.transform.rotation = Quaternion.Euler(90f, 0f, 0f);
rot = new Quaternion(0f, 0f, 1f, 0);
return true;
}
return false;
}
private void Update()
{
if(gyroCheck)
{
transform.localRotation = gyro.attitude * rot;
}
}
}