Unity3D Study vol.2

2010.01.05 | unity3d

ひきつづき、Unity3D。
例としてFlashIDEをあげながら説明していきます。

Unity For Flash Developers – Tutorial 3 (Prefabs)
http://vimeo.com/2984852
を元に、UnityでのPrefabs,Scriptの扱い方について理解をすすめます。
若干ムービーとの流れは違いますがやっていることは一緒です。

PrefabsはFlashでいうと、シンボルのようなものです。
Prefabsの意味からすると、組み立て部品というニュアンスが近いかも。

まずは、あたらしくプロジェクトをつくります。
Project作成時にInport the following packagesでどのパッケージがインポートするか選択できるが、今回はシンプルなものをつくるので必要なし。これの説明については別の機会に。

新しくProjectを作成すると「Hierarchy」に「Main Camera」のみ表示されています。Unityは基本的に3D空間を扱うので、なにかを表示するには必ずカメラが必要となります。Cameraがないと「Game」ビューにはなにも表示されません。

まず、メニュー「GameObject > CreateOther」からオブジェクトを作成します。
「Cube」と「Directional light」を追加します。基本的には何かをつくる場合にはこのメニューからSceneにオブジェクトを追加していくことになります。

次にProjectに「Prefab」を追加します。「Project」部分を右クリックで作成するか、「Create」メニューから選択すると、「new prefab」が追加されるので、好きな名前にリネームします。ここではムービーにならって「SpinCube」とします。
「Hierarchy」からさきほどの「Cube」をprefab「SpinCube」にDrag&Dropします。
これでCubeがSpinCubeのパーツとして登録されました。
FlashでいうとCubeをSpinCubeという名前のシンボルとして登録するのと同じような役割です。

prefabに登録してしまったので、Scene上から「Cube」は削除しても問題ありません。
「Cube」を削除してしまい、かわりにProject内の「SpinCube」をScene上にDrag&Dropして配置します。必要であれば移動ツールまたはInspectorで配置した場所を変更します。
Prefabとして登録されているものは「Hierarchy」上では文字色がブルーで表示されます。

これでScene上にPrefabに登録したGameObjectが配置されました。

次に配置したものをスクリプトで動かします。
「Project」で「JavaScript」を作成し、適当な名前をつけます。ここでは「RotateObject」と名前をつけます。

スクリプトの中には、

var speed:float = 40.0;

function Update () {
	var spinAmount = Time.deltaTime * speed;
	transform.Rotate(0, spinAmount, 0);
}

と記述。
Flashやってればなんとなく意味はわかるかと思います。

次にこのJavaScriptを先程のPrefabに割り当てます。
「Project」から「SpinCube」を選ぶと、「Inspector」が表示されます。
表示されているSpinCubeのInspectorパネルにjavascript 「RotateObject」をDrag&Dropします。
再生ボタンを押すと、Scene,Gameビュー内の「SpinCube」がすべて回転します。
ムービークリップシンボルにasを記述するような感じです。

「Prefab」の作成、スクリプトの割り当てについてわかったところで、
次は、PrefabをスクリプトでScene上に作成します。

ムービーとの流れが違いますが、「Ctrl+N」で新しくSceneを作ります。
「Hierarchy」に「Main Camera」のみの新しいSecneが作成されました。

次に先程の「RotateObject」と同じくJavaScriptを作成します。
名前は「MakeObject」として、

var prefab:GameObject;
 
function Start () {
	var pos = Vector3(0,0,0);
	var cube1 = Instantiate(prefab, pos, Quaternion.identity);
	 
	Destroy(cube1,10);
}

「RotateObject」を「Main Camera」Drag&Dropすると(または「Main Camera」のInspectorパネルにDrag&Drop)、スクリプトが「Main Camera」に割り当てられます。
「Main Camera」Inspectorをみると「MakeObject(Script)」が追加されています。
Prefab None(GameObject) となっているので、そこにProjectからPrefab「SpinCube」をDrag&Dropします。

再生ボタンを押すと、Gameビュー上にSpinCubeが追加され、10秒後に消えます。

「Main Camera」にスクリプトを割り当てるのは、FlashでいうDocumentClassに多少近いかと思います。(他に空のGameObjectをつくってスクリプトを割り当てるという方法もありますが。)

このように、Unityでは基本的にDrag&Dropでのオペレーションがメインとなります。
また、javascript内で変数として指定したものも「Inspector」パネル上で指定できるようになります。

There are no comments.

Please Leave a Reply

TrackBack URL :

pagetop