目次
【Unity】MMDモデルを使ってボールを蹴って物体を壊すゲームを作ろう!
その1
その2
その3
その4
その5
その6(完結)
ステージの作成
ここまでで、プレイヤーを作成し、操作出来るようになりました。ゲームにするためにはゲームの世界、即ちステージが必要です。今回作成しようとしているのはボールを蹴って何かを破壊するゲームですので破壊するオブジェクトをステージに配置します。
Prefabの作成
unityではPrefabというものを良く使用します。Prefabとは端的に言うと雛形オブジェクトの事ですが、利用することによって、色々な利点があります。
・同一プレハブならいくつオブジェクトがあってもドローコールが一回だけで済む
・変更を行うと同一プレハブ全てに反映されるため、色をやっぱりこうしようといった変更も一括です。
早速Prefabを作ってみましょう。
まず、cubeを追加します。
追加したらそれをAssetsビューにD&Dします。
これだけでprehab化は完了です。cube.prefabというものがAssets内に作られます。
ヒエラルキー内にある追加したcubeは消してしまいましょう。
prefabからしか使いませんので。
cube.prefabにrigidbodyを追加。
cube.prefabを選択してrigidbodyを追加します。rigidbodyとは直訳すると剛体ですが、unityではこのrigidbodyを持つゲームオブジェクトは物理演算の影響を受ける事が出来ます。
cube.prefabを選択肢している状態でAddComponent→Physics→Rigidbodyです。
prefabをステージにscriptで追加
ステージに一つ一つprefabを配置していくのももちろんアリなのですが、
ここではスクリプトを使って一気にステージを作成しましょう。
C#scriptファイルを新たに生成し、名前は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内にオブジェクトを作ることが出来ます。
このスクリプトが出来ましたら、
スクリプト実行用のオブジェクト、空のオブジェクトを、作成します。
作成したら名前をCreateStageObjectとでもして、csファイルをD&Dして下さい。そして空のオブジェクトを選択するとスクリプトがこのような形になっていると思います。
このGame Objectという項目はCreateStage.csの先頭で宣言したgameObjectフィールドになります。
ここにprehabのcubeをD&Dしましょう。するとスクリプトではプレハブのcubeを次々に生成するような処理になります。
もうお気付きかと思われますが、他のオブジェクトに差し替えたりすることもD&D一発でもちろん可能です。
ここまで出来ましたら、実行して見ましょう。
5x5x5のcubeの山が目の前にそびえ立ったでしょうか。
奥行きがよくわかりませんね…。
カメラをプレイヤーに追尾させる
ちょっと近寄ってよく見えるようにメインカメラがgonta君を追いかけるようにしてみましょう。
MainCameraを選択し、
AddComponent→Camera Control→Smooth Followを選択します。
そして、SmoothFollowを以下のように設定してください。
Target : gonta
Distance : 10
Height : 3
(Distance , Heightはお好みでOKです。)
では、実行して、gontaを移動させてみましょう。
カメラが追尾して作成したcubeの山がよく見えるようになりました!
その6につづく
これでゲームステージは作成完了です。
次はボールを作成し、このcubeの山をぶっ壊します!