ここ1週間はブログ・コンテンツを修正していた。ちょっと前に作ったギャラガもどきも動きが怪しいので直していたら、続きが作りたくなってきたので、作ることにした。ブログを引っ越す前もシューティングゲームを作りかけていたが、それはちょっと置いておくことにした。といってももう相当放置しているが。。
ちょっと前にゲームセンター仕様に近いゲームコントローラーを中古で買った。PS3用らしいのだが、PCでも使えるとのことだったので安いこともあって購入した。なぜこんな巨大なコントローラーを購入したかといえば、PC用のゲームコントローラーはアナログチックで、カチッとした動きじゃない。また一般的なコントローラーは手で持ちながらプレイするので、連射しずらい。そういうところがレトロなシューティングには合わないのである。ただブログのメンテでかかりきりだったので、購入した後は放置していた。
今回このゲームコントローラーをサポートできるようにした。スティックがハットスイッチ(POV)という特殊なものなので、一般的なPC用のコントローラーとは少し違っているため、GamePad APIで得られる値もちょっと変わっていて、特別なサポートが必要だった。
具体的にはAXIS 9にハットスイッチの値が入ってくる。スティックを動かすと以下の値が得られる。ちなみにスティックは8方向である。
スティックの位置 | 値 |
---|---|
真ん中 | 3.285714 |
上 | -1.000000 |
右上 | -0.714286 |
右 | -0.428571 |
右下 | -0.142857 |
下 | 0.142857 |
左下 | 0.428571 |
左 | 0.714286 |
左上 | 1.000000 |
最初この数字が何を意味しているのか分からなかった。が数字をじっくり見ていたら、上から右回りに左上までが、-1から1までの範囲・2/7刻みで加算されていることがわかった。それをうまく0-7までの数値に変換して使用した。
さらにCRT風エフェクトを追加した。遊んでみるとやっぱり8方向レバー・大きいボタンでプレイするのは良い。
敵エディタを作っている途中で放置したので、今後はそれを完成させることに注力することにする。
動作サンプル
ソースコード・リソース
/dev/2dshooting/devver/20170923/css/style.css
/dev/2dshooting/devver/20170923/index.html