ってことで、SurfaceViewを使った小さなサンプルを作ろうとして始めたのに何故かガチで作りたくなってしまったDixqです、こんばんは。
今朝から作り始めてまぁなんとか遊べるものにはなったような、なっていないような。。。
加速度センサーを使ってイライラ某的なゲームを作りました。
素材は使わず全て標準の図形を描くメソッドのみで出来ています。
灰色の壁は当たっても大丈夫。赤い壁は当たるとアウト。当たらずに緑のゴールを目指そうというゲームです。
1日で作ったようなものですが、apkファイル配布していますので、よろしければどうぞ
http://dixq.net/blog/Android/resQ_v1.01.apk
・戻るボタンでやり直し出来ます。
・ゆっくり壁に接触して止まると不具合がおきるかも。。。
難しかったのはボールが壁にあたると跳ね返ったり、傾けると障害物に当たりながらも低い方に流れていく処理。
とりあえず図形のパスと自機であたり判定計算して、パスのベクトルと自機の進行方向ベクトルから反射角計算して、反射させてるんですが、
速度が0だと反射しないので、壁に接触して止まった状態で傾けると低い方に動かないんですよね。。。
それと四角形の角にぶつかると刺さることがある。。。
計算しているパスのベクトルが角は2つあるからでしょうが、う~むなんかいい王道な計算方法あるんですかねぇ。。
実装したいい加減コードはこちら
http://dixq.net/blog/Android/resQ_v1.01.zip
クラス図
ゲーム作るにはGL使わないとダメかなと思ってましたが、SurfaceViewでも十分ですね。
3D表示はできませんが。
※追記※
・縦固定西、横回転しないようにしました。
・画面のタイムアウトを無しにし、自動的にスリープにしないようにしました。
※追記2※
・Android1.6に対応したバージョンも作りました。
http://dixq.net/blog/Android/resQ_1.6_v1.02.apk