JavaScriptで加速度センサーの値を取得した件ですが、どうもiOSとAndroidとでは加速度の軸の向きが逆みたいなのです。
W3Cではデバイス座標系を定義していて、
- X軸正方向が端末デフォルト向きに対して右方向
- Y軸正方向が端末デフォルト向きに対して上方向
- Z軸正方向が端末デフォルト向きに対して手前方向
となっています。
DeviceMotionEventイベントのaccelerationプロパティやaccelerationIncludingGravityプロパティも当然この座標系に沿って、端末が右へ加速したならxが正の値に増加するというのが普通の解釈だと思います。
しかし、iOSではそうでは無いようです。右、上、手前へ加速するとx、y、zがそれぞれ負の値になります。逆向きに加速すると正の値になります。どうも座標軸の向き自体が逆になっているようなのです。同じChromeでもiOS版とAndroid版とで向きが異なります。これは困りました。
OSを判別してiOSなら向きを反転させるか、または、DeviceOrientationEventで済む事ならそちらを使うようにするのが良いのでしょうね。
そんなわけで、この間作ったスキーゲームも修正しました。傾けた方向とは逆きに動いてしまっていたので。