Unityメモ – ジャイロでカメラを動かす方法

Posted: 2016年3月25日 カテゴリー: アニュビスの仮面, プログラミングメモ, Unity, Unity メモ
タグ:, , , ,

今回はスマホのジャイロ機能を使ってスマホ本体の向きによってカメラの向きを変える方法を紹介します。

 

まず、自信のTransformを保持し、現在しようしている機種がジャイロに対応しているかを確認します。対応していない場合は、このコンポーネントを破棄します。

    // 自信のTransform, 毎フレーム参照すると無駄なので保持する
    Transform m_transform;

    // 調整値
    readonly Quaternion _BASE_ROTATION = Quaternion.Euler(90, 0, 0);

    void Start()
    {
        // サポートするかの確認
        if (!SystemInfo.supportsGyroscope)
        {
            Destroy( this );
            return;
        }

        m_transform = transform;
    }

そして実際にカメラを動かすのは簡単で、Input.Gyroをから値を取り出し、それを少し調整してgameobjectのrotationを変えるだけです。

    void Update()
    {
        // ジャイロの値を獲得する
        Quaternion gyro = Input.gyro.attitude;

        // 自信の回転をジャイロを元に調整して設定する
        m_transform.localRotation = _BASE_ROTATION * (new Quaternion(-gyro.x, -gyro.y, gyro.z, gyro.w));
    }

えー、はい。これだけです。このスクリプトをカメラのゲームオブジェクトにアタッチすれば動きます。

 

この処理を使っているアニュビスの仮面の動画:

 

流石に短すぎるので一応オマケで、GearVRとかの時にこのコンポーネントを破棄する処理を付け加えて見ます。

    void Start()
    {
        // サポートするかの確認, GearVR等でも破棄する
        if (!SystemInfo.supportsGyroscope || UnityEngine.VR.VRSettings.enabled)
        {
            Destroy( this );
            return;
        }

        m_transform = transform;
    }

 

以上です。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中