いーじすの戯言

戯言を書く予定です。しょうもなさ全開

Unity Remote5とiOS13間のInput.Gyro取得不具合について.1

検証環境

PCサイド

  • MacBookPro 13inch 2018
  • macOS Mojave 10.14.6
  • Unity 2019.1.8f1
  • Xcode 11.1

iPhoneサイド

概要

Unity2019.3とiPhoneのUnity Remote5を用いて、iPhoneSEとMacを有線で接続し、
Input.Gyroの値をUnityのPlayで取得すると、値が特定の角度で非連続的になってしまう問題を発見しました

オブジェクトの角度が飛んでいる?のと
重力方向を軸とした時の回転が正常に取得できていません


上記環境でビルドしたプログラムをiPhoneにインストールして実行した結果、ジャイロの値は正常に取得できたので、Unity Remote5上でデバッグした時に発生する問題です
以下はビルドして実行した動画


ツイートでも書いているのですが、iOS12.3の端末を接続してテストすると、正常にジャイロの値が取得できるので、OSのバージョンによって挙動が異なるようです

取得するためのc#はいたってシンプルです

//getGyro.cs

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class getGyro : MonoBehaviour
{
    Quaternion currentGyro;

    void Start()
    {
        Input.gyro.enabled = true;
    }

    void Update()
    {
        var rotRH = Input.gyro.attitude;
        var rot = new Quaternion(-rotRH.x, -rotRH.z, -rotRH.y, rotRH.w) * Quaternion.Euler(90f, 0f, 0f);

        transform.localRotation = rot;
    }

    void OnGUI()
    {
        var g = Input.gyro.attitude;
        GUILayout.Label(g.x.ToString());
        GUILayout.Label(g.y.ToString());

        GUILayout.Label(g.z.ToString());
        GUILayout.Label(g.w.ToString());

    }
}

iOS13端末上のiPhoneでRemoteを使うならばその飛びを補完するコードが必要になりそうです
しかし重力軸回転のブレは単純に加速度センサの値を取ってきているようにも見えるので、時間があったら検証します

では。