Categories: 工作・開発

ゲームのキャラと連動して動くフィギュアを自作、銃撃で発光・ゲームオーバーで倒れる

FabSceneの読者投稿フォームに、ゲームと連動して動くフィギュアを製作したという情報が寄せられた。Steamで配信中の2Dシューティングゲーム「エスケープ・フロム・ダッコフ」のプレイヤーキャラクターに合わせてラバーダックが回転し、銃を撃てば銃口のLEDが発光、ゲームオーバー時には赤く光りながら倒れるという仕組みだ。

製作者のnomolk氏が公開した動画では、アヒルのキャラクターが敵と銃撃戦を繰り広げる様子に合わせて、デスク上のラバーダックがリアルタイムで反応する。ゲームのプログラム自体には手を加えず、PC上のPythonスクリプトでマウスカーソルの位置やクリック、画面の特定ピクセルの色を監視し、その情報をシリアル通信でArduinoに送る構成だ。

画像出典元:YouTube

回転しても絡まらない配線

方向転換にはステッピングモーターを使用している。サーボモーターと違って何回転でも回せるため、ゲーム内でキャラクターがぐるぐる回っても追従できる。駆動には28BYJ-48という安価なモーターを採用し、AccelStepperライブラリで制御している。

問題になったのは配線の絡まりだ。モーターで回転させると銅線がねじれてしまい、実際に一度アヒルが倒れる事故が起きた。解決策として導入したのがスリップリングで、回転体と固定部の間で電気的な接続を維持しながら自由に回転できる部品だ。選定時の注意点として、モーター軸を差し込む穴があるタイプを選ぶ必要がある。

画像出典元:YouTube

ゲームオーバーの検出には、画面上のHPゲージの色を監視する方法を採用した。ゲージが赤くなったことをPythonスクリプトが検知すると、サーボモーターが動いてアヒルが倒れ、内蔵の赤色LEDが発光する。元のラバーダックは押すと光る市販品で、内部のオレンジLEDを赤に交換して「血しぶき」の演出に使っている。

武器のAK47は3Dプリントで製作した。レゴ用に公開されていた3Dモデルを拡大して造形し、アクリル絵の具で木の部分を塗装している。銃口にはピンバイスで穴を開けてLEDを仕込み、サンドペーパーで表面を荒らして光が拡散するようにした。

プログラムはChatGPTに書いてもらったという。nomolk氏によると、機能を少しずつ追加するよりも最初から細かい仕様を全部伝えて一発で出力させる方がうまくいくとのことだ。

※この記事は読者投稿フォームからの応募に基づいて作成しました。
FabSceneでは、あなたが開発したユニークな作品を募集しています。詳しくはこちらから

関連情報

技術解説ブログ(nomolkのブログ)

YouTube動画

FabScene編集部

FabScene編集部