JetPackでFlappyBirdのようなゲームをUnity5で作ってみました。

A04

Ray WenderlichにUnity 2Dで、Jetpack Joyrideを作るチュートリアルがあったので、すこし参考にして3D版を作ってみました。最終的にはFlappyBirdのようになり、Ray Wenderlichのチュートリアルとは大分違うゲームになりました。

How to Make a Game Like Jetpack Joyride in Unity 2D – Part 1

いくつか特徴的な部分を記述します。

重力の調整

Unityでは、キューブをある程度の重さにして、上に放り投げた場合、ゆっくり落ちてくるように見えます。これに対応するにはミニゲームの場合は影響を与える箇所がほぼないため、メニュー->[Edit]->[Project Settings]->[Physics]で重力の設定を変えてしまうことです。これでソースコードを修正したりせずに簡単に早く落下させることができます。

001

ブロックの判定

物理エンジンを使わない場合、衝突判定は面倒ですが、Unityだとかなり楽になります。以下の画像がブロックと、それを抜ける隙間部分です。

002

Wallという空のGameObjectの子要素に、Topブロック、隙間(Gate)、Bottomブロックを配置しています。TopとBottomのブロックは単純にキューブのY軸を10にしたオブジェクトです。それで、隙間の部分は、空のGameObjectにBox Colliderコンポーネントを追加し、”Is Trigger”にチェックを入れて、OnTriggerExitで、プレイヤーが通過したら、得点が入るようにしています。

003

Wallのサイズは特に変更せずに、ランダムで表示するY座標を変更させることで以下の画像を実現させています。Unityを使わない場合ブロックのサイズをプログラミングで調節する必要がありますが、Unityは物理エンジンと、トリガー機能があるので、かなり楽に実装できました。

A04

プレイヤーとジェットパックを繋げる方法

004

プレイヤー本体とジェットパックをまとめる方法は、Fixed Jointコンポーネントを使います。ジェットパック側のGameObjectで、Fixed Jointコンポーネントを追加して、”Connected Body”に本体を追加するだけです。

このプロジェクトの配布

https://hajimete-program.com/games/Jetpack.zip

まとめ

ブロック崩しなど小さなゲームを何回も作っていたので、FlappyBirdのようなゲームは初めてでしたが、今までの知識を総動員することで、躓くことなく実装できました。

CrossyRoadのYoutubeチュートリアルを1章だけやってみました。

A04

YoutubeにあるCrossyRoadのチュートリアルの1章をやって面白いことに気づきました。CrossyRoadのキャラクターのアニメーションは、単純にローテーション、Idle時の小さなY座標スケール、移動時の「ピョン」とジャンプするモーションのみです。キャラクターごとに足や手の細かなアニメーションはありません。細かなアニメーションがないため開発効率が高いです。それでいてゲームにあった可愛い動きになっています。

ゲームを作ろうとすると細部にこだわることで品質の高いソフトになると思いがちですが、CrossyRoadのようにどう見せるかを工夫することで、作業効率がかなり違うので、すごく印象的で勉強になりました。余裕ができたら、引き続きこのチュートリアルを進めてみたいです。

 

 

Unityでインベントリーを作成するYoutubeチュートリアル動画

Youtubeでインベントリーを作成するチュートリアルを見つけました。かなりよさそうなのですが、42動画もあり馬鹿みたいに時間がかかります。ちょっと挑戦したいのですが、テキストベースのチュートリアルを探したほうがよさそうです。

 

初心者がUnity5.3でBlenderのモデルを読み込む方法

001

はじめてBlenderを使って3Dモデルを作成してUnity5.3に読み込んでみました。モデルはヘンテコな器ですが、Blenderで切り貼りして、マテリアルにpngテクスチャを付けました。ここまでやってモデリング初心者の私が感じた事をいくつか書きます。

モデリングソフトをどうするか?

最初、国産のモデリングソフトのMetasequoia4を使おうとしたのですが、最上位のライセンスを購入しないとFBXファイルを出力できません。学生ならMayaが無償で使えますが、高いため個人で購入するのは難しいです。MayaはFBXファイルを出力できるのでUnityにそのまま取り込めます。Blenderは無償で使えて、.blendファイルをUnityがそのまま読み込めます。またBlenderで作成したアニメーションも取り込み可能です。(Blender からオブジェクトをインポート)そのためもしMetasequoiaに慣れていたとしても、後々の手間を考えるとBlenderを再学習して使ったほうが良いです。実際に私はほぼ3Dモデリングがはじめてですが初日でUnityに取り込むことができました。

何で学習するか?

3Dモデリング初心者は、そもそもUIや操作方法がわからないので「初心者のための!作って学ぶBlenderの基礎:①基本操作とBlender紹介」が入門におすすめです。注意点としては、このサイトで最初にまじめにパンダを作らないことです。パンダを作っていてはあまりにも時間がかかりすぎます。コップでも雪だるまでもいいので、とりあえず簡単なモデルに読み替えて「初心者のための!作って学ぶBlenderの基礎:③マテリアル・テクスチャを設定する」まで進めます。途中わからないキーワードやショートカット方法が出てきたら、Googleで検索して、補足していくとよいでしょう。

以下サイトもおすすめですが、あくまでBlender入門なので長いです。なので私のように一度Unityに取り込むまでの作業フローを確立してからさらに知識を増やすために使うとよいです。はじめこちらのチュートリアルで始めましたがあまりにも長いので途中で、上記のチュートリアルに変更しました。

Blender入門

  • blenderメモは逆引きに役立ちそうです。
  • http://blender-yamato.blogspot.jp/2011/10/blog-post_8976.html
  • http://blenderfaq.blender.jp/oldfaq/tips/basic-tequnique-for-allied-point

躓いたところ

Blenderのバックグランドイメージ

Blenderでは下書きを参考資料としてバックグランドイメージとして取り込めます。Blender2.77で、バックグランドイメージを表示しようとして、Orthographicにして、テンキーで、正面、側面などに設定しましたが、いまいちバックグランドのパンダのpngファイルがうまく表示されるタイミングがわかりませんでした。Blenderにpngファイルを取り込んでから、エディターを3分割したり非表示にしたりしているうちに表示できるようになりました。

Unity5.3のインポート作業

これはまだちゃんと確認していないのですが、Blenderでプロジェクトを保存すると.blendというファイルになります。これを単純にUnityにドラッグアンドドロップすれば、Unityで使えるようになります。(すごく便利!)ですが、マテリアルとそれに関連付けたpngテクスチャファイルの名称を適当にしていると、Unityで取り込んだ後に、マテリアルにpngテクスチャファイルを再設定する必要があります。また、.blendファイルをpngテクスチャファイルの両方をUnityにドラッグアンドドロップする必要があります。おそらくちゃんとまとめる方法などがあるはずなのでこれは調べていきたいです。

まとめ

いきなりアニメーション付きのキャラクターを作成していてはモデリング作業だけで膨大な時間がかかるため、単純なモデルをUnityにまずは取り込むという作業行程を確立して、小さな静的モデルをどんどんBlenderで作成する事を考慮して作業してみました。途中躓いた部分もありますが1日でできたので、これを繰り返して知識と効率を向上させていきます。