使用陀螺仪控制Unity Camera旋转,需要注意两个问题:
1.左、右手坐标系转换:
陀螺仪的数据使用的坐标系是右手坐标系,而Unity场景的世界坐标系是左手坐标系,所以在使用陀螺仪数据时,需要将其转换为左手坐标系,代码如下:
Quaternion(-q.x, -q.y, q.z, q.w)
或者
Quaternion(q.x, q.y, -q.z, -q.w)
w = cos(theta/2)
x = ax * sin(theta/2)
y = ay * sin(theta/2)
z = az * sin(theta/2)
右手坐标系转左手坐标系,首先要将Z变为-Z,由于左右手坐标系的旋转方向相反,所以theta为-theta,代入求得Quaternion(-q.x, -q.y, q.z, q.w)
2.使用场景:
对于VR场景,通常是竖着放置手机,因此手机需要绕X轴旋转90度,即
Quaternion.Euler