2011年8月17日水曜日

スマートフォン(iPhone)向けUnityサンプルだけどAndroidでも可?

Unityを触ってちょっとずつ理解したこと7

Unityの公式ページにはいくつもののサンプルプロジェクトがあって、その中にはiPhone向けのプロジェクトファイルがあるが、これはAndroid向けにもBuild可能だった。少なくとも、StarTrooperは。
http://unity3d.com/support/resources/example-projects/iphone-examples

StarTrooperは加速度センサーで飛行機を傾けることができて、画面をタッチするとミサイルを発射するようになっている。

Scriptを見てみると、Input.accelerationというVector3型のオブジェクトにアクセスすることで、傾きによる変更が必要なScriptでこの値を参照すれば、Androidでも傾きによるキャラクター操作が可能になる。
また、Input.GetMouseButtonDown(0)で画面がタッチされたかどうかを確かめることができた。

下の画像はサンプルの飛行機の小要素として自分で適当に作ったキャラクターの3Dオブジェクトを配置してみた図。理由はわからないけれども、今回は.blendファイルをAssetsファイル下に置くだけで、直接Unityが.blendファイルがプレハブ化してくれた。どうも、その辺は不安定らしい。




Blenderで作成したデータをUnityにインポートする

Unityを触ってちょっとずつ理解したこと6

BlenderのモデルをUnityにインポートする ・・・

Unityは無料の3DCGソフトBlenderからも3Dデータをインポートすることができます。

最初の方法が、.blendファイルをUnityプロジェクト内部のAssetsフォルダに配置する方法。Assetsフォルダに配置した入るはプロジェクトビューに表示されるので、.blendファイルを選択すると、FBXインポーターがインスペクタビューに表示されるので、FBXに.blendファイルを変換することで、Unityで表示することが可能になる。
ただし、このインポートは制限が多いので、うまくインポートしにくい。

次の方法が、Blenderで先にFBXファイルをエクスポートしてから、FBXファイルをAssetsフォルダに配置する方法。こっちの方法の方がきちんとデータがインポートしやすいので、推奨らしい。










Unityのビルド方法 & Android向けビルドの方法

Unityを触ってちょっとずつ理解したこと5

Unityでゲームをビルドする基本 ・・・
これもドラッグ&ドロップで行ける。「Scenes In Build」の中にビルドを行いたいシーンをドラッグ&ドロップして追加するだけ、後は生成したアプリケーションを動かしたいプラットフォームを選択して、Buildボタンを押すだけ。

Android向けにビルドする場合 ・・・
いくつかの設定が必要なので、Player Settingsボタンを押して、インスペクタビューでAndroid用の設定を編集します。まず必要なのが、アイコン画像の選択とパッケージ名の指定です。
他にもAPIレベルの指定や使用するOpenGLのバージョンの指定、キーストアファイルの作成なんかもできます。





Unityのプロジェクトの基本的な構造

Unityを触ってちょっとずつ理解したこと4

ぱっと見だとちょっとわかりにくい気がするUnityのゲーム作りの流れ ・・・

最初にUnityのプロジェクトを作成しても、いまいちそこからどうゲーム作りにつながっていくのか、わかりにくかったのでUnityプロジェクトのごくごく基本的な構造はこんな感じ。(理解に誤謬があったとしても当方は一切関知いたしません悪しからず(^^;・・・)

1, Unityプロジェクトはシーンの集合 ・・・ ゲームにはメニュー画面、ゲーム画面と様々な画面があるけれども、Unityではそれらはシーンという1つの単位で扱われる。これまでに挙げたUnityの編集画面もすべてシーンの編集を行っている画面ということになる。

2, シーンの中身は階層構造 ・・・シーンの中は階層構造になっている。 構造は千差万別だけれども、基本的にはこんな感じ(?)で。なので、これまでに挙げた画像のヒエラルキビューは現在編集中のシーンの階層構造ということになる。

3, シーンとシーンをつなぐ ・・・ シーン(メニュー画面)とシーン(ゲーム画面)がそれぞれ独立していては、まったくゲームにならないので、スクリプトを使って、シーンとシーンをつなげます。基本的なパターンとしては、特定のボタンが押されたときに、Application.LoadLevel("シーン名");を呼んで、新しいシーンをロードします







プレハブの作り方

Unityを触ってちょっとずつ理解したこと3

プレハブの作り方 ・・・
プロジェクトビューで右クリック、Prefabと選択すると、空のプレハブが作られる。
ヒエラルキビューで編集したオブジェクトを空のプレハブに向かって、ドラッグ&ドロップ。
プレハブの作り方はこれでOK





Unityのプレハブとは

Unityを触ってちょっとずつ理解したこと2

プレハブ(Prefab)ってなんぞ? ・・・
Unityを触るとすぐさま出てくる単語の一つプレハブ。プレハブっていうと掘っ立て小屋のことしかイメージにないけど、それはだいたい正しい、、、かも。

3Dでキャラクターを動かすためには数多くのデータが必要になる。3Dの座標データ、3Dキャラクターを動かすための骨データ、3Dキャラクターの表面に張りつけるテクスチャ画像、3Dキャラクターを制御するスクリプトなどなど。プレハブはそれらを一まとめにしたもの。

例えば、3Dクリボーを作ろうと思ったら、3Dクリボーの座標データ、3Dクリボーの骨・アニメーションデータ、3Dクリボーのスクリプトなどが必要になるので、それらを1箇所にまとめて3Dクリボープレハブとして扱うことができる。

作ったプレハブはSceneビューやヒエラルキビューにドラッグ&ドロップして実際に配置することができる。プレハブ内部の属性をインスペクタビューで編集すると、編集した影響は配置したすべてのオブジェクトに及ぶので、ひとつひとつ編集する手間を省くことができる。

逆に、実際に配置したオブジェクト内部の属性を編集すると、プレハブとのリンクが外れて、今後プレハブの編集の影響が及ばなくなるので注意。(配置したオブジェクトを編集しようとすると、プレハブとのリンクが切れますよってダイアログが出てくる)




2011年8月16日火曜日

Unityの画面の基本的な見方

UnityのAndroidライセンスを購入したので、Unityの使い方をまとめておく意味もこめて、Unityの使い方を記録しておこうと思います。先にGoogle+に書き込んで、ある程度溜まったら、ブログに書き写しています。

Unityを触ってちょっとずつ理解したこと

1, Sceneビュー ・・・ 3Dオブジェクトを実際に配置する画面

2, ヒエラルキビュー ・・・ Sceneビューに配置されているものは目に見えるもの、見えないもの含めて階層構造になっているので、その階層構造を表示する画面(例えば、プレイヤーキャラクターオブジェクトがあったら、その下の階層にプレイヤーの手、足、胴体、頭がそれぞれ別に配置されてたりする感じ)

3, プロジェクトビュー ・・・ 3Dゲームには必要なデータが色々とある。例えば、カメラだったり、光源データだったり、3Dオブジェクトのデータだったり、画像データだったり、スクリプトだったりする。そういったたくさんの小道具を一箇所にまとめて表示するビュー。ここから必要な道具を選んで、ヒエラルキビューやSceneビューにドラッグ&ドロップするだけで、ゲームの中に配置することができる。このプロジェクトビューのフォルダ構成は実際のプロジェクトフォルダ内のAssetsフォルダの構成と同じ。

4, インスペクタビュー ・・・ それぞれの小道具は様々な属性を持っている。例えば、3Dオブジェクトが配置されている座標だったり、スクリプトのグローバル変数の値だったり、光の色だったりする。そうした属性の値はこのインスペクタビューで編集することができる。このビューの操作もドラッグ&ドロップでできる場合が多い。例えば、画像を登録したい場合にプロジェクトビューから画像をドラッグして、登録したいところでドロップするとそれだけで、画像を登録することができる。

5, Gameビュー ・・・ Sceneビューを似ているけれども、Sceneビューが編集用の3D画面なのに対して、こちらはヒエラルキビューに追加したカメラからの目線が表示される。画面上にあるプレイボタンを押すと実際にゲームがスタートして、このGameビューでゲームを試しプレイすることができる。