我正在开发一款Android游戏,根据您倾斜设备的方向计算玩家的移动(左,上,右,下)。
我也想在游戏开始时这样做,它会计算当前的倾斜度,这样如果玩家将手机放在任何位置,他仍然可以玩游戏。
我是这样做的:
(开始时):
defaultAccelX = SceneManager.activity.getAccelX();
defaultAccelY = SceneManager.activity.getAccelY();
(然后是每次更新):
float modifiedAccelX = (SceneManager.activity.getAccelX() - defaultAccelX);
float modifiedAccelY = (SceneManager.activity.getAccelY() - defaultAccelY);
现在,如果播放器将手机放在底部,则此功能正常。但如果我把手机颠倒过来,顶部和底部都会反转,而右边则不起作用。
有谁知道我应该如何处理它以向任何方向工作?
谢谢
答案 0 :(得分:0)
除线性加速度传感器外,Android还提供对方向传感器的访问。
private SensorManager mSensorManager;
private Sensor mSensor;
...
mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
mSensor = mSensorManager.getDefaultSensor(Sensor.TYPE_ORIENTATION);
方向传感器可以为您提供方位角(绕Z轴旋转的度数),俯仰(相同,但X轴)和滚动(相同,但Y轴)。
当您的应用程序运行时,可以访问方向传感器数据,这样即使在播放期间更改了手机的方向,您也可以确定哪种方式可用。