您好我正试图通过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
}
}