![プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム](photos/20240324110715.jpg)
前作の「
ムカデ四匹対戦ゲーム」に引き続き、またCOM対戦型のゲームを作ってみました。今回はエアホッケーです。エアホッケーと言えば、私もひと昔前にゲームセンターでよくプレイした記憶があります。マレットでパックを思いっきり弾き飛ばして、相手のゴールに入る瞬間の爽快感はなかなかのものです。その爽快感とスピード感を何らかの形で再現したいと思いながら作ったのが、本作「プチエアホッケー」になります。
タイトル: プチエアホッケー
公開キー: 4T49NH3DJ
![](photos/20240324110715a.jpg)
作りはじめは自分(マレット)とパックの動きからです。左スティックでマレットの操作、Bボタン(もしくはLボタンまたはRボタン)で加速、Aボタンでスマッシュという設定にしました。当たり判定や衝突時の反発処理は、いつもの物理演算プログラムを応用する形なので、基本的なところはそれほど手間がかかりませんでした。ただ、パックがかなりの高速(速い時は1フレームで数十ドット)で動くために、パックがマレットをすり抜けてしまうなど、不自然な挙動を起こすことがありました。そのため、1回の処理あたりの速度を1/5に落として、1フレームあたりの処理回数を5回にすることで、衝突時の精度を高めるようにしました。これによりパックの不自然な挙動がなくなりました。
![](photos/20240324110715b.jpg)
その後、実際のエアホッケーで使われるテーブル、ゴール、マレット、パックの寸法を調べて、同じような比率でキャラクターをセットしてみました。しかし、マレットとパックが思いのほか小さくなりすぎて、かなり見づらい感じになってしまいました。テーブルを横に表示して全体を大きく表示させるアイデアもありますが、私は「プレイヤーが手前にいて、マレットでパックを向こうに押し出す…」感覚をできるだけ出したかったので、やはりテーブルは縦に表示する形を固辞しました。ただ、キャラが小さすぎるのはよろしくないので、マレット、パック、ゴールをそれぞれ大き目に調整して見やすく調整はしました。
![](photos/20240324110715c.jpg)
COMの動きに関しては意外とてこずりました。サーブの時の位置調整や、スマッシュ始動の判断、パックが止まりそうになった時の追いかけ、それに高難易度を選択した場合にはパックの到達位置予測をするなど、色々な要素を組み込んでいったら、かなり複雑なプログラムになってしまいました。それに加えてファール判定やゴール後の処理などの場合分けを作っていくうちに変数が多くなりすぎてしまい、久しぶりに自分の中で把握しきれなくなってしまいました(変数表を作るのが億劫なもので…)。それでもどうにかこうにかして、ゲームとして成り立つ感じにはなってきました。
![](photos/20240324110715d.jpg)
あとは見た目の調整をした上で、一旦完成、公開までしたのですが、その後にSwitchの携帯モードでプレイしたところ、気持ち大き目に調整したはずのマレットとパックがかなり見づらいことに気づきました。これではプレイに支障をきたしかねないので、マレットとパックの直径をそれぞれ+30%アップ、これに合わせて各種パラメーターを再度調整した上でサーバーに再アップしました。キャラサイズ辺りの設定は定数を1か所変えるだけで他も調整するようにしたこともあり、せっかくなのでトップ画面でLボタンとRボタンを同時に押すと、マレットとパックのサイズが切り替わる隠し機能も加えておきました。
プログラムは以下の通りです。
COM対戦型ゲームを続けて作りましたが、次回もCOM対戦型ということでオセロゲーム(リバーシ)を作ってみようかなと思っています。以前、PHPでもオセロゲームを作ったことがあるので、その時のCOM思考ルーチンをほぼそのまま適用するつもりでいます。
プチコン4関連記事
(リンク一覧):
すいかを落とせ - プチコン4で横スクSTGパズルアクションゲーム /
パチスロ風ゲーム+シミュレーター - プチコン4で単チェリーからのネジりとペカりを再現 /
プチリバーシ - プチコン4でシンプルなオセロ風ゲーム /
プチエアホッケー - プチコン4でシンプルなエアホッケーゲーム /
ムカデ四匹対戦ゲーム - プチコン4でCOM対戦型ゲーム / ...
(記事連続表示)