UnityのInput.gyro.attitudeとInput.accelerationを使ってARをやる際の備忘録

前提:ジャイロセンサによってスマートフォンとカメラを同期、その上で加速度の方向をUnity内部と現実世界で合わせる

<br />
    void Update()<br />
    {<br />
        Quaternion orient = Input.gyro.attitude;<br />
        orient.x *= -1;<br />
        orient.y *= -1;<br />
        Quaternion sub = Quaternion.Euler(90, 0, 0);<br />
        transform.rotation = sub * orient;</p>
<p>        Vector3 accelVecCam = new Vector3( Input.acceleration.x, Input.acceleration.y, -Input.acceleration.z);<br />
        transform.GetChild(0).localPosition = accelVecCam*20; //確認用. 適当なGameObjectをカメラの子にする<br />
    }<br />

accelVecCamはカメラ座標系での加速度ベクトルであることに注意.
World座標にしたいときはtransform.TransformVectorで変換すること.

Input.gyro.attitudeのほう
参考元:http://vr-cto.hateblo.jp/entry/2016/05/02/070000
参考元の参考元:http://qiita.com/fuqunaga/items/b1a3e38af71f062f0781

Input.accelerationのほう
参考元:https://developer.android.com/reference/android/hardware/SensorEvent.html

Posted on