实现3dof功能

1.前言

现实中手机移动,可以看到相应转动的虚拟画面,采用手机自带的惯导就可以实现,当然也可以借助手机ar的插件,比如arcore或者easyAR等。

2.代码实现

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

public class GyroCameraController : MonoBehaviour
{
    private Gyroscope gyro;

    // 相机初始的态势
    Quaternion cameraBase = Quaternion.Euler(90, 0, 0);

    void Start()
    {
        // 从Input中获取陀螺仪对象
        gyro = Input.gyro;
        // 开启陀螺仪
        gyro.enabled = true;
        // 获取陀螺仪的态势数据
        Debug.Log(gyro.attitude);
    }

    void Update()
    {
        transform.rotation = cameraBase * ConvertRotation(gyro.attitude);
    }

    // 将旋转从右手坐标系转换到左手坐标系
    private static Quaternion ConvertRotation(Quaternion q)
    {
        return new Quaternion(q.x, q.y, -q.z, -q.w);
    }
}
posted @ 2021-05-16 17:35  81192  阅读(227)  评论(0编辑  收藏  举报