【Unity】MMDモデルを使ってボールを蹴って物体を壊すゲームを作ろう！その５【基礎】 

## 目次
【Unity】MMDモデルを使ってボールを蹴って物体を壊すゲームを作ろう！
[その１](http://qiita.com/kuuki_yomenaio/items/07a3214eb518c21a10b1)
[その２](http://qiita.com/kuuki_yomenaio/items/0b0cac2846a4ffef514d)
[その３](http://qiita.com/kuuki_yomenaio/items/f9be3083afc19fb0f86c)
[その４](http://qiita.com/kuuki_yomenaio/items/33cc2d234f3394bd0eab)
[その５](http://qiita.com/kuuki_yomenaio/items/95f54a7404d71c80cbaf)
[その６(完結)](http://qiita.com/kuuki_yomenaio/items/03ed5212de0a93f0de13)

## ステージの作成
ここまでで、プレイヤーを作成し、操作出来るようになりました。ゲームにするためにはゲームの世界、即ちステージが必要です。今回作成しようとしているのはボールを蹴って何かを破壊するゲームですので破壊するオブジェクトをステージに配置します。

### Prefabの作成
unityでは[Prefab](http://ws.cis.sojo-u.ac.jp/~izumi/Unity_Documentation_jp/Documentation/Manual/Prefabs.html)というものを良く使用します。Prefabとは端的に言うと雛形オブジェクトの事ですが、利用することによって、色々な利点があります。
・同一プレハブならいくつオブジェクトがあってもドローコールが一回だけで済む
・変更を行うと同一プレハブ全てに反映されるため、色をやっぱりこうしようといった変更も一括です。

早速Prefabを作ってみましょう。

まず、cubeを追加します。

![スクリーンショット 2014-03-31 17.23.36.png](https://qiita-image-store.s3.amazonaws.com/0/26453/41684129-6533-08b1-8977-4d125e59639d.png)


追加したらそれをAssetsビューにD&Dします。
これだけでprehab化は完了です。cube.prefabというものがAssets内に作られます。

![スクリーンショット 2014-03-31 17.24.45.png](https://qiita-image-store.s3.amazonaws.com/0/26453/f17d0382-0cb5-2b83-29fc-3505cf33db1a.png)

ヒエラルキー内にある追加したcubeは消してしまいましょう。
prefabからしか使いませんので。

![スクリーンショット 2014-03-31 17.27.19.png](https://qiita-image-store.s3.amazonaws.com/0/26453/ec0b9636-f3ed-2851-10b4-7702b3701f9a.png)


cube.prefabにrigidbodyを追加。
cube.prefabを選択してrigidbodyを追加します。rigidbodyとは直訳すると剛体ですが、unityではこのrigidbodyを持つゲームオブジェクトは物理演算の影響を受ける事が出来ます。

cube.prefabを選択肢している状態でAddComponent→Physics→Rigidbodyです。

![スクリーンショット 2014-03-31 17.28.58.png](https://qiita-image-store.s3.amazonaws.com/0/26453/efee6367-da89-72ed-32f8-b54af9bdddb6.png)

### prefabをステージにscriptで追加
ステージに一つ一つprefabを配置していくのももちろんアリなのですが、
ここではスクリプトを使って一気にステージを作成しましょう。

C#scriptファイルを新たに生成し、名前はCreateStage.csとします。

![スクリーンショット 2014-03-31 17.30.49.png](https://qiita-image-store.s3.amazonaws.com/0/26453/d0a430c7-8d88-95a4-d248-30d5b7401c13.png)


そして以下のようにプログラムを記述します。

```csharp:CreateStage.cs
using UnityEngine;
using System.Collections;

public class CreateStage : MonoBehaviour {

	public GameObject gameObject;
	// Use this for initialization
	void Start () {
		int countW = 5;
		int countH = 5;
		int countZ = 5;
		float x = -3;
		float y = 0;
		float z = 5;

		Vector3 pos;
		for(int i = 0 ; i < countW ; i++){
			for(int j = 0 ; j < countH ; j++){
				for(int k = 0 ; k < countZ ; k++){
					pos = new Vector3(x, y, z);
					Instantiate(gameObject , pos , transform.rotation);
					z += 1;
				}
				y += 1;
				z = 5;
			}
			x += 1;
			y = 0;
		}
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}

```

3重ループに関しては配置位置を少しずつずらしているだけです。
キモになるのはInstantiate、このメソッドで動的にunity内にオブジェクトを作ることが出来ます。

このスクリプトが出来ましたら、
スクリプト実行用のオブジェクト、空のオブジェクトを、作成します。

![スクリーンショット 2014-03-31 17.37.48.png](https://qiita-image-store.s3.amazonaws.com/0/26453/0e22cc28-41e3-f380-3434-919a84e94111.png)


作成したら名前をCreateStageObjectとでもして、csファイルをD&Dして下さい。そして空のオブジェクトを選択するとスクリプトがこのような形になっていると思います。

![スクリーンショット 2014-03-31 17.38.18.png](https://qiita-image-store.s3.amazonaws.com/0/26453/f5ef858d-e491-339e-b6a8-b4275ab13e01.png)

このGame Objectという項目はCreateStage.csの先頭で宣言したgameObjectフィールドになります。
ここにprehabのcubeをD&Dしましょう。するとスクリプトではプレハブのcubeを次々に生成するような処理になります。

![スクリーンショット 2014-03-31 17.38.46.png](https://qiita-image-store.s3.amazonaws.com/0/26453/dbd6ff82-9046-d935-af24-b1dbe3f395a8.png)


もうお気付きかと思われますが、他のオブジェクトに差し替えたりすることもD&D一発でもちろん可能です。
ここまで出来ましたら、実行して見ましょう。
5x5x5のcubeの山が目の前にそびえ立ったでしょうか。

![スクリーンショット 2014-03-31 17.45.21.png](https://qiita-image-store.s3.amazonaws.com/0/26453/2b517cab-9007-7562-ace8-6899c341f9f5.png)

奥行きがよくわかりませんね…。

### カメラをプレイヤーに追尾させる

ちょっと近寄ってよく見えるようにメインカメラがgonta君を追いかけるようにしてみましょう。
MainCameraを選択し、
AddComponent→Camera Control→Smooth Followを選択します。

![スクリーンショット 2014-03-31 17.47.11.png](https://qiita-image-store.s3.amazonaws.com/0/26453/c9f561a4-c590-9e54-e519-8184197cb37c.png)

そして、SmoothFollowを以下のように設定してください。
Target : gonta
Distance : 10
Height : 3
(Distance , Heightはお好みでOKです。)

では、実行して、gontaを移動させてみましょう。

カメラが追尾して作成したcubeの山がよく見えるようになりました！

![スクリーンショット 2014-03-31 17.50.15.png](https://qiita-image-store.s3.amazonaws.com/0/26453/e969d905-b1f2-b15c-2b94-cf95559c12ae.png)

## その６につづく
これでゲームステージは作成完了です。
次はボールを作成し、このcubeの山をぶっ壊します！