Unity加速度计旋转相机

时间:2017-02-07 19:31:29

标签: android unity3d camera rotation accelerometer

我尝试使用LookAt()函数围绕多维数据集旋转相机,并在Android设备中使用加速度计。它运作良好。但是我想让旋转停在Y轴的某个值上。到目前为止,这是我的代码:

public Transform target;    // The object to follow
public float topMargin = 0.2f;  // Top rotation margin

// The position of the target
private Vector3 point;

void Start () {
    point = target.transform.position;
    transform.LookAt (point);
}

void Update () {
    // Freeze
    if (transform.rotation.y >= topMargin) {
        transform.RotateAround (point, new Vector3 (0, 1, 0), 0);
    }
    // Freeze
    else if (transform.rotation.y <= -topMargin) {
        transform.RotateAround (point, new Vector3 (0, 1, 0), 0);
    } else {
        transform.RotateAround (point, new Vector3(0, 1, 0), Input.acceleration.x);
    }
}

问题是当相机到达上边距时,我无法再向相反方向旋转。我尝试过使用标志变量,但无法获得正确的程序逻辑(尝试使用不同的if / else&#39; s)。关于如何实现这一点的任何建议?

1 个答案:

答案 0 :(得分:0)

您可以检查(预期)旋转方向。如果结果将导致更合适的旋转(远离边界并朝向允许区域),则可以“允许”应用预期的旋转。 我想使用加速度计值检查“预期方向”将是最简单且最不容易出错的。 (而不是检查旋转本身)