【Unity】ジャイロセンサーでスマホカメラの向きに同期する方法。つまりはARの骨格。

どうも、だらはです。
今回はジャイロセンサーでスマホカメラの向きに同期する方法を紹介したいと思います。

スポンサーリンク

コピペで動作するスクリプト

早速ですがスクリプトを記載します。
以下のスクリプトをMainCameraにアタッチして使用してください。

◆ジャイロセンサーでスマホカメラの向きに同期するスクリプト(PlayerCtrl.cs)

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

public class PlayerCtrl : MonoBehaviour
{
    private Quaternion attitude;

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

    private void Update()
    {
        attitude = Input.gyro.attitude;
        attitude.x *= -1;
        attitude.y *= -1;
        Quaternion sub = Quaternion.Euler(90, 0, 0);
        transform.rotation = sub * attitude;
    }
    
    private void OnGUI()
    {
        var angles = attitude.eulerAngles;
        var rect1 = new Rect(10, 10, 400, 30);
        GUI.Label(rect1, "X: " + angles.x);
        rect1.x += 100;
        GUI.HorizontalSlider(rect1, angles.x, 0, 360);

        var rect2 = new Rect(10, 40, 400, 30);
        GUI.Label(rect2, "Y: " + angles.y);
        rect2.x += 100;
        GUI.HorizontalSlider(rect2, angles.y, 0, 360);

        var rect3 = new Rect(10, 70, 400, 30);
        GUI.Label(rect3, "Z: " + angles.z);
        rect3.x += 100;
        GUI.HorizontalSlider(rect3, angles.z, 0, 360);
    }
}

スマホでしか動作を確認できないので、申し訳ないのですが実行結果は無しという事でご容赦ください。。

肝心の処理内容についてですが、多分知ってもふ〜んで終わると思いますし、よく分からない理論出てくるしでメリットは少ないと思います、、ので詳細は割愛!

最後に

いかがでしたでしょうか。
今回はスクリプトにジャイロセンサーの角度も表示してみました。
角度表示が不要の方はOnGUI関数を削除して下さい。
あくまで表示のための処理です。
さあ、今回はもう伝えることが無いので短いですが、、ドロンです!

以上、だらはでした。

スポンサーリンク

応用

Posted by daraha_gm