用陀螺仪进行Android头部跟踪,初始方向

时间:2017-12-04 17:13:01

标签: c# unity3d

您好我正试图通过Input.gyro在Unity中实现Android跟踪。我基本上要做的是让我的家伙通过陀螺仪进行上下(俯仰)头部运动和车身转向(偏航)控制。它起作用,当我用手机直接开始游戏时,这被作为参考点,一切都按预期工作。然而,当我用手机躺下来开始游戏时,游戏假设是平面场,当我旋转手机将它拿在我面前时,游戏会抬起来。

有没有办法以绝对值计算出手机是躺着还是放在身边?我已经尝试存储了最初的Input.gyro.rotationRateUnbiased.y,但这似乎没有做任何事情。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GyroTracker: MonoBehaviour {

    public Transform head;

    public float clampAngleUp = 80.0f;
    public float clampAngleDown = 52.0f;
    private float rotY = 0.0f; // rotation around the up/y axis
    private float rotX = 0.0f; // rotation around the right/x axis

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

        rotY = Input.gyro.rotationRateUnbiased.y;
        rotX = Input.gyro.rotationRateUnbiased.x;

    }
    void FixedUpdate() {

        rotY -= Input.gyro.rotationRateUnbiased.y;
        rotX -= Input.gyro.rotationRateUnbiased.x;
        rotX = Mathf.Clamp(rotX, -clampAngleUp, clampAngleDown);

        transform.rotation = Quaternion.Euler(0, rotY, 0); // Rotate bodys Y
        head.transform.rotation = Quaternion.Euler(rotX, rotY, 0); // Rotate head X
    }
}

0 个答案:

没有答案