Android 当我以横向方向倾斜手机时,物体旋转错误

Android 当我以横向方向倾斜手机时,物体旋转错误,android,ios,unity3d,acceleration,Android,Ios,Unity3d,Acceleration,我正试着旋转一个和我手机一样倾斜的物体 我发现这条线非常有用 但是,当我将设备置于横向,并尝试在左右之间倾斜移动设备时,对象在Z轴和Y轴上旋转 我想在手机水平时锁定Y轴,但在垂直时不锁定 我放了一张我正在尝试的图片: 编辑: 也许你可以用你的图片,但是有点混乱。在第2张和第3张图像中,当您将手机与地面平行放置时,是否会更换摄像头?如果能看到一些代码和视频来说明它是如何工作的,那就太好了。但是,您无法通过设置transform.up来完成此操作。你必须分离输入、加速、标准化的组件。我用代码编辑了第

我正试着旋转一个和我手机一样倾斜的物体

我发现这条线非常有用

但是,当我将设备置于横向,并尝试在左右之间倾斜移动设备时,对象在Z轴和Y轴上旋转

我想在手机水平时锁定Y轴,但在垂直时不锁定

我放了一张我正在尝试的图片:

编辑:


也许你可以用你的图片,但是有点混乱。在第2张和第3张图像中,当您将手机与地面平行放置时,是否会更换摄像头?如果能看到一些代码和视频来说明它是如何工作的,那就太好了。但是,您无法通过设置transform.up来完成此操作。你必须分离输入、加速、标准化的组件。我用代码编辑了第一篇文章,你只需要将这个脚本附加到游戏对象上就可以看到问题,我想我可能需要分离旋转,但我不知道如何分离,因为分离Y轴和X轴很容易,但是,我如何组合它们进行对角旋转呢?
private var sizeFilter: int = 15;
private var filter: Vector3[];
private var filterSum = Vector3.zero;
private var posFilter: int = 0;
private var qSamples: int = 0;

function MovAverage(sample: Vector3): Vector3 {
    if (qSamples==0) 
        filter = new Vector3[sizeFilter];

    filterSum += sample - filter[posFilter];
    filter[posFilter++] = sample;

    if (posFilter > qSamples)
        qSamples = posFilter;

    posFilter = posFilter % sizeFilter;
    return filterSum / qSamples;
}

function Update() {
    var temp: Vector3 = -MovAverage(Input.acceleration.normalized);
    temp.x *= -1;
    transform.up = temp.normalized;
}