モーションセンサー機能を使ってみようでは実際にコードを書いてアプリをつくろうと思いますが、ただセンサーの情報に合わせて数値が変化するだけのようなアプリではツマらないですし飽きてしまうと思うので、Step2で学習した内容を使ってせっかくなので実際に簡単な「玉転がしゲーム」を作ってみたいと思います。0~-90度[1]傾きセンサーから傾きの情報を取得する傾きの情報を取得するのは、SensorManagerのインスタンスを取得して、イベントハンドラを登録するだけなので簡単です。アプリの初期化タイミングでは、以下のようなコードを書きます。SensorManager.SENSOR_DELAY_GAME);}onSensorChanged()がイベントハンドラです。ここでは傾きの値をメンバ変数に記録しています。傾きの値をボールに反映させるのは別の箇所で行います。SensorManager.registerListener()の第2引数は傾きセンサーを表します。第3引数はセンサーの反応速度です。SensorManager.SENSOR_DELAY_GAMEは20ms間隔で、かなり速い反応速度です。[2]傾きをボールに伝えるボールはスレッドで動かします。スレッドで実行するrun()メソッドの中で、傾き(Pitch、Roll)をボールに伝えます。}}[4]玉を移動するBall.move()メソッドで玉を移動させます。以下にコードの抜粋を示します。三角関数を使って加速量(dx、dy)を計算しています。次に、現在の移動速度(Dx、Dy)を少し減衰させた上で、加速量(dx、dy)を足しています。減衰をしないと玉の勢いがありすぎてコントロールしにくいと感じましたので、今回はこのようにしています。上述では省略していますが、壁に当たると跳ね返るようにしています。このとき、ブロック崩しのように同じ速度で跳ね返ると不自然に感じましたので、跳ね返った時の移動速度を減衰させるようにしています。現実世界でも摩擦により玉の移動速度に減衰が生じたり、壁に当たった玉が跳ね返る瞬間に、壁やボールがその衝撃を吸収していることと同じですね。はね返り量といったものを微妙に調整することで、玉のコントロールの難易度や自然さが決まっていくようです。静摩擦係数とすることで、静止状態からの玉の動き出しがより自然になると思います。このように、端末を傾けるとそれぞれの方向に、玉が移動します。いかがでしたでしょうか?今回で、センサーの使い方がどんな感じなのか大まかに掴めたのではないでしょうか?次回は、方位センサーについて今回同様実際にアプリを作りながら説明していきたいと思いますのでお楽しみに。今回コラムで使用したプログラムはこちらからダウンロード出来ます。本コラム内で提供する情報のご利用は、利用者ご自身の責任において行われるものとします。保証するものではありません。当社は、利用者がこれらの情報をご利用になったこと、またはご利用になれなかったことにより生じたいかなる損害についても責任を負いません。本コラムで提供される各種情報に関し、利用者と他の利用者あるいは第三者と紛争が生じた場合、利用者は自己の費用と責任においてこれを解決するものとし、当社に損害を与えないものとします。当社は、本コラムに掲載する情報の全部又は一部を予告なく変更する場合がございます。本コラムの運用を休止または停止する場合がございます。当社は、理由の如何を問わず本コラムの提供が遅延し、または中断したことに起因して利用者または第三者が被った被害について、一切の責任を負いません。コンピューター環境その他の理由により、本コラムが正常にご利用できない場合がございます。公開日時点のものであり、団体・サービス・ツール等の名称が変更されることがあります。登録してみよう>>TOPへ会社案内プレスリリース災害用伝言版サービスサイト。