4

我正在开发一款安卓游戏,玩家的移动(左、上、右、下)取决于您倾斜设备的方向。

我也想在游戏开始时这样做,它会计算当前的倾斜度,这样如果玩家在任何位置拿着手机,他仍然可以玩游戏。

以下是我的做法:

(开始时):

defaultAccelX = SceneManager.activity.getAccelX();
defaultAccelY = SceneManager.activity.getAccelY();

(然后在每次更新时):

float modifiedAccelX = (SceneManager.activity.getAccelX() - defaultAccelX);
float modifiedAccelY = (SceneManager.activity.getAccelY() - defaultAccelY);

现在,如果玩家将手机保持在底部,这将起作用。但是如果我把手机倒过来,上下颠倒,右边就不行了。

有人知道我应该如何处理它以向任何方向工作吗?

谢谢

4

1 回答 1

0

除了线性加速度传感器,Android 还提供对方向传感器的访问。

private SensorManager mSensorManager;
private Sensor mSensor;
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);

方向传感器可以为您提供方位角(围绕 Z 轴的旋转度数)、俯仰(相同,但 X 轴)和滚动(相同,但 Y 轴)。

可以在您的应用程序运行时访问方向传感器数据,因此即使在游戏过程中手机的方向发生变化,您也可以确定哪条方向是向上的。

详情请参阅:Android SDK:位置传感器

于 2014-05-18T00:18:20.183 回答