結月ゆかりとマキさんとゆっくりのゲームを作ります!

結月ゆかり、弦巻マキ、ゆっくり霊夢が主人公の簡単なゲームを作成し始めました。以下のGifのように、見下ろし型のガン・シューティングゲームです。あまり大風呂敷を広げると途中で挫折してしまうので、まずは5分ぐらいで遊べるゲームを作ります。

A01
ゾンビだ!!

なので、最初のリリースをするまでの現在の残り作業は以下ぐらいです。

  • アイテムドロップと、取得して銃の性能アップをする仕組み
  • 敵をあと2,3種類は増やす。
  • 時間経過で、ウェーブ中の敵が多く強くなり、5分以上は無理な状態にする。
  • ライフバーやダメージテキストの表示
  • インベントリー管理は保留。

Unity5でオーディオヴィジュアライザーを作りました。

結月ゆかり、弦巻マキ、ゆっくり霊夢のゲームを作る過程で、オーディオ・スペクトラムの取得方法など調べているうちに、一度オーディオ・ヴィジュアライザーを作ったほうが理解しやすいのでUnity5で作成しました。

画像の青いスペクトラムのソースコードが以下になります。

まず、プリミティブのキューブを2048個並べます。手動で並べるのは面倒なので、for文とInstantiateで生成します。キューブは、CreatePrimitiveで作成しても構いません。キューブは当然Transformコンポーネントを持っているので、localScaleプロパティーで、サイズを変更できます。

CreatePrimiviteでキューブを作成する場合は、GameObject.CreatePrimitiveです。

 

スペクトラムを取得するには、GetSpectrumDataを使います。Unity5.3場合は、第一引数にあらかじめ、領域確保した配列を渡して呼び出せば、結果としてそこにデータが返ってきます。以前のAPIでは戻り値でデータを取得しましたが今は非推奨です。このサンプルでは、配列のサイズは2048にしていますが、2のN乗の値であれば問題ないようです。

あとは、gameobject.transform.localScaleのY軸にこのスペクトラムデータと倍率を渡して、キューブのY座標が大きく増減するようにしています。これでオーディオヴィジュアライザーの完成です。

キューブを円状に並べる場合は、Mathf.Cos、Mathf.Sinで単位円(半径1の円)のXY座標が求められるので、radiusで大きくしてあげればよいです。これはUnityに限らず三角関数のお約束みたいなコードです。

 

このプロジェクトの配布

http://hajimete-program.com/games/VisualGround2.zip

音声ファイルは、二次配布になるため削除しています。http://www.d-elf.com/ さんに良い曲がいっぱいあります。

Blenderで結月ゆかりにアニメーションをつけてみました。

トップダウンシューティングのチュートリアルが完了したので、以前MagicaVoxelで作った結月ゆかりモデルにBlenderでアニメーションをつけて、Unityで動かしてみました。はじめてのモーション作成ですが、やっぱり自分で作ったキャラクターが動くのはいいですね!

Blenderでアニメーションを用意して、Unityで再生
Blenderでアニメーションを用意して、Unityで再生
002
.blendファイルとpngをドラッグアンドドロップするとfbxが作成される

Unityでは、Cubeなどを拡大縮小したり回転したりしてアニメーション・クリップを用意できますが、Blenderで作ったhumanoidベースのモデルの場合は、Unityでボーン修正してアニメーション作るのは簡単ではないようです。Unity上で試行錯誤しましたが、私は結局やり方が分からず、最終的にはBlender側でアニメーションを作成して、それをUnityに読み込むことにしました。

Unityでゲームを作る場合は、Blenderでモデリングとアニメーションをする人と、Unityでプログラミングをする人を明確に分けれるので、複数人がやりやすいと感じました。

FBXを生成する必要なし?

ネット上を見るとBlenderで、FBXファイルをエクスポートするという方法をよく見かけますが、特に細かい設定をしない場合は、そのまま.blendファイルを画像ファイルをUnityにドラッグアンドドロップすれば自動で、FBXが生成されるようです。

 

ImageEffectsをいろいろつけた
ImageEffectsをいろいろ試した

まとめ

Blenderでアニメーションを複数用意して、FBXファイルとしてエクスポートして、Unityで動作させる一連の作業フローが確立できました。まずはゲームを作るため適当なモーションになりますが、少しづつ磨き上げていこうと考えています。

 

MagicaVoxelで東方プロジェクトのキャラクターも作ってみました。

A04

昨日はあまり実装する意欲がなかったので、東方プロジェクトのキャラクターの魂魄妖夢と十六夜咲夜を作ってみました。AH-SoftwareのVocaloid+と東方プロジェクトは、無償で二次創作をする際には、緩いライセンスのようで、ミニゲームを作るときのキャラクターとして使っても問題なさそうです。あと魔女っ娘も作ってみました。

以前、Blenderでリギングをしたので、これらモデルはボーンを簡単に入れられるはずなので、もう少しキャラクターを揃えてから、リギング作業をルーチンワークとして行い、作業手順を頭に叩き込みたいです。

 

MagicaVoxelで結月ゆかりなどを作ってみました。

プロシージャル・ジェネレーションの息抜きに、ゲーム動画の実況でよく使われているAH-Softwareの入力文字読み上げソフトVocaloid+のキャタクターをMagicaVoxelで作ってみました。作り方は、まず「MagicaVoxelで作ったプリキュアをUnityで動かす」のMagicaVoxel用素体と全く同じものを自分ではじめから作ってみました。これにより基本操作と頭身のバランスなどを理解できるようになりました。このモデルは体に厚みがなく、手足も1Voxel単位なので細かい表現は難しいですが、1つモデルを作ったらあとは髪の毛と色を調整すれば、それとなく別キャラクターが作れるのでとても便利でした。

1.モデルを複製しながら操作方法を覚える

001

2.結月ゆかりを作ってみる

002

 

3.弦巻マキは、髪型やヘッドセットは違うが、顔が平らで同じ大きさ、手足も1voxel単位で、縦横に伸びていて結月ゆかりと色が違うだけ。

003

3.いくつかモデルを作った後、オリジナルのゆっくり霊夢を作成。21x21x21の立方体のなかで小さく作ってしまったのでもっと大きくしてもよかった。

004

まとめ

MagicaVoxelだと絵が描けなくても、Googleで「ドット絵」と検索して、小さいモデルを作ればなんとかなりそうです。ハードマークやドル袋みたいなアイテムなども作ってUnityで動かしてみます。

 

ミニゲームJetpackYukarin

JetPackでFlappyBirdのようなゲームをUnity5で作ってみました。」の記事で作ったミニゲームを改造して、プレイヤーキャラクターをMagicaVoxelで作成した結月ゆかりと弦巻マキにしてみました。

001

いわゆるエンドレスゲームで、Flappy Bird(フラッピーバード)のようなゲームです。壁に衝突して戻されるとゲームオーバーではじめからなります。

操作方法

  • スペースキーでジェット噴射
  • Aキー、Dキーで左右移動

ゲームのダウンロード

http://hajimete-program.com/games/GameJetpackYukarin.zip

プロジェクトの配布

こちらはUnity5.3のプロジェクトになります。ソースコードや結月ゆかり、弦巻マキのモデルプレハブが含まれています。このミニゲームはシンプルなのでプログラミング初心者の参考になります。

http://hajimete-program.com/games/JetpackYukarin.zip

まとめとやってみたいこと

MagicaVoxelで簡単にキャラクターが作れました。SEやアイテムなどを用意したりアニメーションを作れるようになれば大分ゲームの印象が変わるので挑戦したいです。