“RUN” それは魔法の言葉

私とコンピュータの思い出を、だらだらと綴ります。最近はHSP3でのゲーム作り日記です

242.HSPでゲームを作ろう:技術研究 スマホのセンサーを扱おう その3

前回、筐体を傾けて ボールが動くテストプログラムを作った。

ちょっとゲームっぽくするために、適当な位置にターゲットを表示する。
そのターゲットにボールを当てるまでの時間を出してみる。

#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

youtu.be

今回作ったプログラムでは、センサーで取得した値を、ほぼそのまま移動量に適用してみた。
5フレーム(5/60秒)ごとに、加速度センサーの取得値を移動量にしたのだが、リアルタイムに動かしているように感じられた。
このフレーム数を増減するだけでも、すごく敏感に動くのか、傾けて反応するまでを遅くして、お釣りがくるような動きも作れそう。

このプログラムを、メインで使用しているスマホと、タブレットにインストールして、動きを比較したが、やはり機種ごとに傾けた量とセンサーの反応の速さの違いがある。
実際にゲームの操作系として使うときは、機種別の差を埋める、補整機能が必要になるかな。

加速度センサーを使ってのゲームアイデアが浮かぶかな?と思っていたが、見事に良いものを思いつかないので、これにて一区切りとするww