美文网首页
Uniyt 使用手机陀螺仪控制摄像头

Uniyt 使用手机陀螺仪控制摄像头

作者: 爱喝粥的西瓜 | 来源:发表于2018-08-24 00:52 被阅读52次

    表示我的注释写清楚了每一步的作用,所以就不做多的说明了

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    using UnityEngine.UI;
    
    public class Gyro : MonoBehaviour
    {
        public bool first;
        // Use this for initialization
        void Start ()
        {
            //  开启陀螺仪
            Input.gyro.enabled = true;
        }
        
        // Update is called once per frame
        void Update ()
        {
            //  第一次获取到陀螺仪重力加速度数据 这个数值决定当前手机的初始姿态,是水平放置,还是竖直放置的 只要Z轴有值,手机就不是水平放置的
            if(first && Input.gyro.gravity != Vector3.zero)
            {
                //  这里让unity的相机初始姿态和手机的一样
                Vector3 v = new Vector3(Input.gyro.gravity.z * -90, 0, 0);
                this.transform.localEulerAngles = v;
                first = false;
            }
            else
            {
                //  陀螺仪控制unity相机 陀螺仪和unity摄像机的旋转方向刚好是反的
                Vector3 v = Input.gyro.rotationRateUnbiased;
                //  屏蔽unity摄像机的Z轴旋转,不知道是不是陀螺仪的原因,还是我操作的原因,
                //  不屏蔽这个轴向,让unity相机自由旋转 偶尔会Uniyt摄像机角度无法恢复过来
                v.z = 0;
                this.transform.localEulerAngles -= v;
            }
        }
    }
    
    

    PS:
    只适合简答的时候,要完全正确的使用,需要对陀螺仪的姿态进行各种转换;
    完美的解决方案

    相关文章

      网友评论

          本文标题:Uniyt 使用手机陀螺仪控制摄像头

          本文链接:https://www.haomeiwen.com/subject/kumviftx.html