ウェブカメラで既存ゲームを遊び倒す例
(English Version)
概要
アクションゲームを体全体の動きによって操作できるようにするツール。
GUIを用いて空間内にセンサーを配置しておくと、そのセンサー領域への
侵入物を検知してあらかじめ指定されたキーイベントを発生させる。
EyeToy対応でないゲームを無理矢理EyeToyに対応させてしまおう、という意図である。
スクリーンショット
デモ
動作環境
Windows + 一般的な日本語配列キーボード (他のキーボードはたぶん無理)
必要なもの
以下のPython処理系/Pythonライブラリをあらかじめインストールしておく。
指定したバージョン以外のものを用いた場合の動作確認はとれていない。
ソースコード
起動方法
上記の2ファイルを同じディレクトリに置き、
$ python image.py
で起動する。.py拡張子に対する関連付けがある場合は、image.pyをダブルクリックしても同様に起動する。
操作方法
センサーの新規作成
カメラ画面内でマウスを左ボタンでドラッグ。
このあと直ちにキー入力を待つモードに入るので、今作ったセンサーに関連付けたいキーを選んで入力。
センサーへの接触判定
センサー領域内の初期状態の画像と現在の画像との差が大きくなると、「プレーヤーがセンサーに触れた」と判定される。
以下に説明する「当たり判定の反転」や「センサーの移動/リサイズ」を行うと、センサーが現在の画像で初期化し直される。
当たり判定の反転
既存のセンサーを左クリックすると、体が触れていないときにOn になるような正反対のセンサーに変わる。もう一度左クリックするともとに戻る。
センサーの移動/リサイズ
センサーを左ボタンでドラッグして移動。
同様に、センサーの四隅を左ボタンでドラッグするとリサイズ。
登録キーの変更
センサーを右クリック。
センサーの削除
センサーを右ボタンでドラッグ。
プレイ開始
"Now Playing:" をチェックすると、各センサーの設定はロックされ、当たり判定に対応したキーイベントが実際に発生するようになる。
キーイベントを受け取らせたいゲームアプリケーションのウインドウはアクティブな状態にしておくこと。
ヒント
画像処理によるタイミングの遅れが致命的になるゲームとは組み合わせないほうがよい。
例えば、音ゲーは不可。
いっぽう、マリオ系のアクションゲームは、タイミングの遅れが
かえってハラハラ感を煽るので結構面白い。
ジャンプ用のセンサーを自分のはるか頭上に設置しておくと、マリオをジャンプさせるために
自分もかなり本気でジャンプしなければならなくなり、マリオの普段の苦労が身にしみて
よく分かるようになるのでお薦め。
当たり判定を反転させたセンサーは、体を縮めるような動作に対応させて使うことができる。
例えば、普通に直立すると胸が来るような位置にこのセンサーを置いておくと、
しゃがむ動作に反応してキーイベントを発生させることができる。
参考
Python webcam fun - motion detection
SATOH Hideaki