■ [作業履歴][unity]Gravityごっこを作ってみた
- Unity WebPlayerで動くデモ
映画「Gravity」を見て衝撃を受けた勢いで、Unityを使った宇宙遊泳体験アプリを作ってみた。
遠くに見えるスペースシャトルやスカイラブまで行く事もできるようになってるけれど、ISSから離れると戻れなくなりそうで怖い。暗闇に遠ざかる人影を見つけるのも困難なので、命綱なしの宇宙遊泳なんて正気の沙汰とは思えない感じ。
映画を見て宇宙遊泳がやりたい!と思ってとりあえずUnityのAsset Storeで「Space」で検索してみたら、NASAが提供している非常に高品質な無料アセットと宇宙からみた地球や星雲を出すアセットが見つかったので、これだけ揃ってればわりと簡単にそれっぽい絵は出せそうだったので組み合わせてみた。
今回使用したアセットは以下の2つ。
NASA Space Flight Assets
NASA主催のGameJam向けに提供していた宇宙飛行キット。今回使用した宇宙服やISSだけでなく、ロケットや小物なども充実していてどれも高品質。
一緒に宇宙空間用の音声やSEなんかも入ってたので入れてみた。こんなよくできたアセットを無償で提供してるなんてNASAは太っ腹だな、と。
SPACE for Unity - Space Scene Construction Kit
宇宙空間を表示するアセット。大きく移る地球が欲しかったので。星雲の色や数などもパラメータで調整できて便利。
常にカメラから等距離に地球や星雲を置く仕様になっているため、そのままではOculus対応できないあたりは注意が必要。
この2つのアセットから適当にモデルを配置して、背景扱いの静止物にはMesh Colliderを適用して、それ以外の浮いてる物体には重力を切ったRigidBodyと適当なColliderを適用するだけで無重力状態が再現できる。
あとはスクリプトでキー操作に合わせたプレイヤーの動きをつけて、ライティングやフィルタをそれっぽい感じに調整するだけでおおむね完成系に。
ヘルメットの反射には曇ったノイズっぽいテクスチャを張った適当な半透明物体にライティングしたものを置いてるけど、ここはキューブマップを撮影したりとかもう少し工夫の余地がありそう。
こんな感じのゼロから作ろうとすると何ヶ月かかるかわからないようなものでも、アセットストアから落としてきたものを適当に組み合わせると数時間の作業でそれなりに見えるものができてしまうあたりは、Unityでのプロトタイピングの生産性の高さが実感できる。
また、次に何か思いついたときにはこれを起点に作り始めることができるようになるので、Unityを使ってこまめに手を動かしておけばおくほど、新しい思い付きを形にするのが容易になっていくようにも思ってる。
あと、MMD用のモデルでモーションが入れられる宇宙服があったので、MMD4Mecanimで取り込んでラグドール化して手の動きだけRazer Hydraで取れるようにしてOculus対応すれば、無重力空間でISSの表面の掴める場所を移動しながらエアロックを目指す場面なんかも再現できたりしそう。余裕があればやってみたい。