前回、筐体を傾けて ボールが動くテストプログラムを作った。
ちょっとゲームっぽくするために、適当な位置にターゲットを表示する。
そのターゲットにボールを当てるまでの時間を出してみる。
#include "hsp3dish.as" screen 0,480,800 celload "bomb.png",1 celdiv 1,32,32 es_ini es_area 0,0,480,800 gsel 1 es_size 32,32,60 es_pat 0,0,0 ;パターンを読み込み es_pat 1,64,0 gsel 0 randomize *init es_set 1,240,400,0 es_apos 1,0,0 es_set 2,rnd(480),rnd(800),1 es_apos 2,0,0 ax=ginfo_accelx ay=ginfo_accely az=ginfo_accelz jx=ginfo(259)*57.2958 jy=ginfo(260)*57.2958 jz=ginfo(261)*57.2958 *main repeat t=double(cnt*16.0)/1000.0 redraw 0 pos 0,0 color 128,255,255 boxf 0,0,480,800 color 0,0,0 mes "ボールに当てろ!" mes t es_draw redraw 1 await 16 if cnt\5=0 { ax=ginfo_accelx ay=ginfo_accely az=ginfo_accelz jx=ginfo(259)*57.2958 jy=ginfo(260)*57.2958 jz=ginfo(261)*57.2958 ix=-int(ax) iy=int(ay) es_apos 1,ix,iy es_check hi,1 if hi>=0 : goto *hit } loop *hit redraw 0 pos 0,0 color 128,255,255 boxf 0,0,480,800 color 0,0,0 mes "hit!" mes t es_draw redraw 1 await 5000 goto *init
動かしてみたのがこちら。
筐体を映してないから、傾けているのかすらわからない謎動画になってしまったw
今回作ったプログラムでは、センサーで取得した値を、ほぼそのまま移動量に適用してみた。
5フレーム(5/60秒)ごとに、加速度センサーの取得値を移動量にしたのだが、リアルタイムに動かしているように感じられた。
このフレーム数を増減するだけでも、すごく敏感に動くのか、傾けて反応するまでを遅くして、お釣りがくるような動きも作れそう。
このプログラムを、メインで使用しているスマホと、タブレットにインストールして、動きを比較したが、やはり機種ごとに傾けた量とセンサーの反応の速さの違いがある。
実際にゲームの操作系として使うときは、機種別の差を埋める、補整機能が必要になるかな。
加速度センサーを使ってのゲームアイデアが浮かぶかな?と思っていたが、見事に良いものを思いつかないので、これにて一区切りとするww