“RUN” それは魔法の言葉

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

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

コンテストが終わって、「たまねとりっぷ!」を作り続けるモチベが下がったので、別のことをやることにした。

LCDゲーム風アプリを作るのも楽しいけど、スマホで別ジャンルのゲームを作りたいと思うようになったので、スマホのセンサーの情報を扱えるようになろうとテストを開始した。

スマホアプリ「BASIC!」には、スマホの各種情報を取得できる命令が用意されており、センサーの情報も取れたのだが、その当時は何の値が取れているか不明で、使うことを断念していた。

HSPでもスマホの加速度センサーとジャイロセンサーの値が取れるようなので、まずは取得するところから。
ginfo_accelxマクロで、加速度センサーのX軸の情報が取れる。いや、どれがX軸?w
他のandroid系のアプリ作成ページを漁ってみると、どうやら左右方向の軸らしい。上下の奥行方向がY軸、スマホを水平に置いて、筐体の垂直方向の軸がZ軸になる。
んで、それぞれに重力加速度の9.8が掛かっているという仕組みらしい。

ジャイロセンサーも、ginfo命令で値が取れる。加速度センサーと何が違うの?という疑問。こっちは角速度を検知できる。直線的な動きではなく、ぐりぐりと筐体ごと回転する動きを検知したいときに使う。主に、画面の自動回転とか、地図アプリとかで使われる。

とりあえず、どんな値が表示されるか確認するために、簡単なプログラムを作ってみた。

#include "hsp3dish.as"

ax=ginfo_accelx
ay=ginfo_accely
az=ginfo_accelz
jx=ginfo(259)*57.2958
jy=ginfo(260)*57.2958
jz=ginfo(261)*57.2958

repeat
redraw 0
pos 0,0
color 128,255,255
boxf 0,0,480,800
color 0,0,0
mes "センサーテスト"
mes cnt

mes "------------"
mes ax
mes ay
mes az
mes "------------"
mes jx
mes jy
mes jz


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
}
loop

センサーを使ったプログラムは、実機でしか動作確認できないのが地味に面倒ww
apkファイルをビルドして、いつものようにGoogleドライブ経由でスマホにインストールした。

注意点としては、HSP3Dish helperで、プロジェクトを作るときに、センサーを使用するチェックが必要なこと。

逆にセンサーを使わないときはチェックしないでとのこと。電池の消耗が変わるらしい。

年内の投稿はこれまでです。
2024年も、ご愛読いただきましてありがとうございました。
懲りずに2025年もお付き合いいただけますよう、よろしくお願い申し上げます。