こんにちは、ギャップラー小林です。ハッカソン技術解説編のラストは、優勝した「チーム MOJI」です。早速その内容を紹介したいと思います!
みなさんこんにちは、チーム MOJI です。チーム MOJI では Kinect を使用した壁抜けゲーム、「YO-TU」(ヨーツー、腰痛)を開発しました。プレイしても楽しく、人がプレイしているのを見ても楽しめるものになったのではないかと思います。
YO-TU のゲーム内容について
はじめにゲームの流れについて説明します。
1. Kinect に向かってポーズをとると、キャラクターも同じポーズをとります
2. キャラクターに次々と迫る壁
3. キャラクターを動かして、迫りくる壁のすき間をくぐり抜けよう!
4. 壁にぶつかってしまうと池に落下
非常にシンプルです!
システムの構成
本システムには下記の機材を用いました。
- スクリーン
- プロジェクター
- PC
- Kinect
Kinectについて
ご存知、マイクロソフトから発売されているセンサデバイスで、ジャスチャーおよび音声認識による操作を行えるものです。今回「YO-TU」では、このジェスチャ認識機能を使いました。元々は Xbox の周辺機器なのですが、Windows 用 SDK をバンドルしたものも販売されています。 (開発には Windows 8 以上が必要)
制作時の工夫など
キャラクターの制御
キャラクターについては、UnityKinect2Mikuを使用して人体との同期を実現しました。UnityKinect2Miku に対して行ったことはシンプルで、キャラクターの部位を Inspector で関連づけを行った程度です。
壁との当たり判定は、各部位のコライダーの設定は工夫が必要でした。
- コライダーのサイズはなるべく小さく 各部位の見た目に合わせたサイズにすると精度は上がりますがゲームの難易度が高くなってしまうため、不自然にならない程度ギリギリまで小さくしました。
- コライダーを入れる箇所は極力少なくする 上と同様でゲームの難易度が高くなってしまったため、こちらも不自然にならないギリギリまで減らしました。
- 全てのコライダーを「Is Ttrigger」にした 上位の親 GameObject に Conmpnent されたスクリプト内だけに OnTriggerEnter イベントを実装し、まとめて処理するようにしました。
ステージの制作
ステージには Maya の FBX や Unity のプリミティブオブジェクト だけでなく、MikuMikuDance のステージも使わせていただきました。
モデルは カブッP様の「wood grain set」、インポートには Stereoarts様 の MMD4Mecanim を使用させていただきました。今回はオリジナルのシェーダを用いましたが、そこまでこだわらないのならほんの数秒で使えるものになってしまいます。モデルもインポータもすばらしい出来です。
質のいいステージモデルを取り込めたのもそうですが、Unity にある下記のような機能を使うことで、本当に短時間でステージをつくり上げることが出来ました。
- 水面: Unity Pro の Water
- キャラクターの落下: Ragdoll
- 落下時の飛沫: Shuriken Particle
- カーテン: Interactive Cloth
- マルチアングル映像: RenderTexture
- モーション: Animator
壁の制作
今回、大体のオブジェクトは Unity Asset Store にあるオブジェクトを利用していますが、壁については自分たちで作成しました。壁の制作に利用したソフトウェアは次のとおりです。
- Blender: 壁の3Dモデルの制作
- GIMP: テクスチャの制作
制作手順は次のとおりです。
- 平面のメッシュを利用する壁の大きさにする
- ナイフカットツールで平面に人が抜ける様の形の頂点を作成する
- 作成した頂点を選択して面を削除する
- 人が抜けれるように作成した頂点の形を整える
- 壁に厚みをつける
- UVテクスチャの展開図を作成する
- UVテクスチャの展開図に色やロゴなどを付ける
- Unityで読み込めるようにfbx形式で出力する
3D モデルの制作に慣れた方であればさほど難しくはないのかもしれませんが、初めての壁作りはかなり苦労しました。。。たかが壁、されど壁、ですね!
おわりに
おかげ様でハッカソン当日は、会場に来られていた方に好評をいただけたようです。機会があれば、もっと多くの方に遊んでいただければ嬉しいですね。