我正在使用Motion API,并尝试为我目前开发的游戏制定控制方案。我想要实现的是设备的方向直接关联到一个位置。例如,将手机向前和向左倾斜表示左上角位置,将手机向后和向右倾斜则表示右下角位置。如下图所示(红色圆点表示计算出的位置)。
向前和向左
向后和向右
现在是困难的部分。我还必须确保这些值考虑了设备方向的左侧和右侧横向朝向(肖像是默认设置,因此无需进行计算)。是否有人做过类似的事情?
备注:
- 我尝试使用偏航、俯仰、翻滚和四元数读数。 - 我意识到我所说的行为很像一个水平仪。
现在是困难的部分。我还必须确保这些值考虑了设备方向的左侧和右侧横向朝向(肖像是默认设置,因此无需进行计算)。是否有人做过类似的事情?
备注:
- 我尝试使用偏航、俯仰、翻滚和四元数读数。 - 我意识到我所说的行为很像一个水平仪。
// Get device facing vector
public static Vector3 GetState()
{
lock (lockable)
{
var down = Vector3.Forward;
var direction = Vector3.Transform(down, state);
switch (Orientation) {
case Orientation.LandscapeLeft:
return Vector3.TransformNormal(direction, Matrix.CreateRotationZ(-rightAngle));
case Orientation.LandscapeRight:
return Vector3.TransformNormal(direction, Matrix.CreateRotationZ(rightAngle));
}
return direction;
}
}