Unity3D 陀螺仪两种方法

  //01  
    Gyroscope gyro;
    Quaternion quatMult;
    Quaternion quatMap;
    GameObject player;
    GameObject camParent;
    void Awake()
    {
        player = GameObject.Find("Player");
        // find the current parent of the camera's transform  
        Transform currentParent = transform.parent;
        // instantiate a new transform  
        camParent = new GameObject("camParent");
        // match the transform to the camera position  
        camParent.transform.position = transform.position;
        // make the new transform the parent of the camera transform  
        transform.parent = camParent.transform;
        // make the original parent the grandparent of the camera transform  
        //camParent.transform.parent = currentParent;  
        // instantiate a new transform  
        GameObject camGrandparent = new GameObject("camGrandParent");
        // match the transform to the camera position  
        camGrandparent.transform.position = transform.position;
        // make the new transform the parent of the camera transform  
        camParent.transform.parent = camGrandparent.transform;
        // make the original parent the grandparent of the camera transform  
        camGrandparent.transform.parent = currentParent;

        //gyroBool = true;  
        //if (gyroBool) {  
        gyro = Input.gyro;
        gyro.enabled = true;
        camParent.transform.eulerAngles = new Vector3(90, 0, 0);
        quatMult = new Quaternion(0, 0, 1, 0);

    }

    void Update()
    {

        quatMap = new Quaternion(gyro.attitude.x, gyro.attitude.y, gyro.attitude.z, gyro.attitude.w);
        Quaternion qt = quatMap * quatMult;

        transform.localRotation = qt;


    }
    // 两种方法  ----------------------- 02
    bool draw = false;
    bool gyinfo; Gyroscope go;
    void Start()
    {
        gyinfo = SystemInfo.supportsGyroscope;
        go = Input.gyro; go.enabled = true;
    }
    void Update()
    {
        if (gyinfo)
        {
            Vector3 a = go.attitude.eulerAngles; a = new Vector3(-a.x,   -a.y, a.z);
            //直接使用读取的欧拉角发现不对,于是自己调整一下符号 
            this.transform.eulerAngles = a; this.transform.Rotate(Vector3.right * 90, Space.World);
        }
    }  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值