読者です 読者をやめる 読者になる 読者になる

Mokosoft開発者ブログ

こんなブログ読んでも時間の無駄ですよ

Unity3Dで2D物理シミュレーションゲームを作ってみよう

f:id:mad_ochi:20140329095842p:plain

最強ゲーム開発環境として誉れ高い、Unity3Dを使って2Dゲームを作ってみました。

 

第二回目も執筆しました。

Unity3Dで2D物理シミュレーションゲームを作る:プログラム編 - Mokosoft開発者ブログ

 

飛べ!キーウィ - Flying Kiwi

飛べ!キーウィ - Flying Kiwi

  • mokosoft
  • ゲーム
  • 無料

 

Get it on Google Play

 

 

Flashで動くデモも公開してみました。

ブログに貼り付けれないのでこちらから

※音が出ます

こういうのが簡単に出力できてしまうのもUnityの魅力の一つです。

 

毎度ながらAppleの審査に時間がかかるので、記事にするのは作ってから1か月後とかになってしまいます。

Unity - Game Engine

 

 Webサイトを見ると、ライセンスは15万もするのか、と思ってしまうのですが、無料でも十分使えます。

今回のゲームも、ライセンスは買っておらず無料(一部有料のasset)で作成しました。

 

Unityというのは統合開発環境ソフトとなっており、3D空間のエディット機能やアニメーションの生成、重力シミュレーションなどなど、おおよそゲームに必要と思われる機能の編集や実行が手軽に行えるものになっています。

 

過去のゲーム開発を鑑みると、こういったゲームを開発するためのツール類というのは自作するというのが常だったかと思います。

3Dオブジェクト一つを読み込んで表示するのにも、コードを書かないと読み込めないし、表示することもできません。

そうでなくても、既存のツールを組み合わせてゲームを作るのが当たり前でした。

しかしUnityにはそれらが既に用意されているため、アプリケーションをたちあげたら即ゲームが作成できるんです。

 

と、利点ばかりを取り上げて紹介してみましたが、なにからなにまで万能というわけではありません。

 

Unityの素晴らしい所は、アセットと呼ばれるプログラムの集合体(プラグインのようなもの)を利用して、ゲーム開発を有利に進められたり、Unity自体に新たに機能を追加したりすることができるという所なのですが、

逆にこのアセットがないと、初めから簡単にできることは限られているわけです。

このアセットを自分でこつこつ作成していけば、新しいゲームを作る時には使い回しがきくわけで、どんどんと有利になるのですが、やはり時間がかかってしまいます。

そういった考えは全世界の人が考えるわけで、このアセットを販売するアセットストアにて多くの便利アセットが販売されています。

 

要は、自分で時間をかけてコツコツやっていけば、無料でなんでも作れるが、時間をかけずに短時間でゲームを作成するには、アセットストアで便利なアセットを購入する必要があると。これはもう課金ゲーなのですw

お金に物を言わせれば、早く高クオリティのゲームが作れるかも!ということです。

 

アセットにはプログラムだけでなく、リソースも多くあるため、3Dの素材だったり、BMGやSEだったり、背景やテクスチャなどなど、そういったものも多くあるので、プログラムしかできない、という人でも見た目のかっこいいゲームも作れるわけですね。

 

実際の所、ただたくさんアセットを買っただけで、知識もセンスもなければ、ゲームは作れないでしょうけども。

Unityに機能を追加する系のアセットは、値段の割に高機能のものが多くて、非常に便利であると思います。

 

私は今回、2Dゲーム作るなら必須だろといわれているNGUIを購入しました。(95$)

 

Unityは最新バージョンで2Dゲーム作成サポートの機能が新たに追加されました。

基本は3Dのゲームを作るソフトだったので、今までは開発者が工夫をして2Dゲームを作成していました。

3D空間を真横からみたら2Dに見えますんで、そういう空間をつくって、3Dオブジェクトの1面だけにテクスチャを貼ったりなんかして、ですね。

そうすると、メニュー画面とか、オプション画面とか、画面にスコアを表示したりとか、3Dの機能だとなかなか実装するのが大変だし、パフォーマンスも悪い、ということで生まれたのがこのNGUIというアセットなのでした。

これは3D空間とは別にまったくお互いを意識することなく、2Dの画面を作れるアセットのため、非常に重宝されました。

 

それが、今回のUnityのアップデートにより、2D表示サポートや、スプライト表示がサポートされたため、多くのNGUIの機能をデフォルト機能で実現することも可能となりました。

ですが、それを取ってもNGUIの仕組みは強力で魅力的のため、今回はNGUIを利用することになりました。

 

Unityの基本

今までゲーム開発に携わったことがあるプログラマの方や、Flash+ActionScriptで動きのあるFlashを開発した方などは、Unityは入りやすいのではないかと思います。

Cocos2dxの時と同様、シーンという概念があり、シーンの中に色々なオブジェクトを配置して、オブジェクトに対して個別のプログラムを記述していくことで、動きをつけることができます。

 

f:id:mad_ochi:20140329105435p:plain

新規プロジェクトを作成すると、なにもない3D空間が表示されるので、「2D」ボタンを押しましょう。

 

f:id:mad_ochi:20140329105523p:plain

Z軸が固定されて、2D表示になります。

 

f:id:mad_ochi:20140329105625p:plain

 プロジェクトビューのAssets以下にフォルダなりを作成して、画像ファイルを突っ込みます。

右クリックをして「Import New Assets..」からでも良いですし、直接ドロッグアンドドロップしてもいけます。

 

f:id:mad_ochi:20140329105752p:plain

 

インポートしたアセットのプロパティで、種別をSpriteに設定しましょう。

本当はテクスチャアトラスという形式で、複数の画像を一つの画像に集めてしまったほうが処理効率が良いのですが、さくっと作るにはこれで十分かと思います。

 

f:id:mad_ochi:20140329105934p:plain

 

そして、プロジェクトビューからシーンビューへドラッグアンドドロップすると、オブジェクトを配置できます。

右にあるゲームビューが実際にゲーム画面として見える画面になります。

 

f:id:mad_ochi:20140329110045p:plain

そして、配置した各オブジェクトに機能を追加していきます。(コンポーネントといいます)

これは、キーウィの方です。

AddComponentというのを選択すれば、既存のコンポーネントを追加することができます。

RigidBody2Dを追加すると、重力の影響と衝突計算が行われるようになります。

RigidBody2Dの中の「Fixed Angle」をチェックしておきます。

衝突範囲をポリゴンの形に沿ってつけているため、地面と衝突したときに転がってしまうので、これをつけておくと、回転しません。

また、衝突判定のためにClider2Dを付与します。

 

 

f:id:mad_ochi:20140329110306p:plain

 

地面オブジェクトにもColider2Dを付与しておきます。

大きさはプロパティからも変えれますし、シーンビューでShiftキーを押しながら、衝突範囲のサイズを変更することが可能です。

 

f:id:mad_ochi:20140329110411p:plain

 

この状態で、ゲームを実行(プレイボタンを押す)すると、キーウィが地面の上に落下していきます。

 

なんだかこれだけでゲームっぽくなりましたね!

これに、後はプログラムを追加していけば、もっとそれらしくなっていきます。

長くなったので、続きは次回で。