我想问你是否可以通过按下按钮来校准Android设备传感器(G-Sensor和Compass)。我正在开发一种使用磁传感器进行俯仰,滚动和航向的应用程序,用户必须通过触摸按钮来开始在每个应用程序上校准传感器。
如果可以这样做,是否只能为该应用程序保存传感器配置?假设您从我的应用程序校准它,然后您玩游戏。游戏无法使用这些设置。
谢谢!
答案 0 :(得分:0)
在我的情况下,我有2层 1)GCa librationLayer 用于设置校准点 2)GamePlayLayer 游戏正在玩的地方,我们正在使用传感器的价值
所以当用户按下“校准它”按钮时,你所要做的就是玩游戏层 运行此代码,它将校准g传感器在Y轴上0点以上50%(我们将在GamePlay中看到如何)
void GCalibrateLayer::Calibrate()
{
UserDefault *userdefault = UserDefault::getInstance();
double calibrate_X = 0;
double calibrate_Y = 0.5;
userdefault->setDoubleForKey("callibrate_x",callibrate_X);
userdefault->setDoubleForKey("callibrate_y",callibrate_Y);
}
你的游戏玩法中的首先在init()中获取这些数据并保存变量“_calibrate_X”和“_calibrate_Y”
UserDefault *userdefault = UserDefault::getInstance();
_callibrate_X = userdefault->getDoubleForKey("callibrate_x");
_callibrate_Y = userdefault->getDoubleForKey("callibrate_y");
并且在你的加速方法中 将这些变量的值添加到加速度计值并使用新变量(_accelerometer_X,_accelerometer_Y)作为acc-> x和acc-> y。
void GamePlayLayer::OnAcceleration(cocos2d::Acceleration *acc, cocos2d::Event *event)
{
_accelerometer_X = acc->x +_calibrate_X;
_accelerometer_Y = acc->y +_calibrate_Y;
}
您也可以使用从加速计获得的自定义值,而不是GCalibrateLayer :: Calibrate()中的0.5和0。
希望你能得到答案。