LoginSignup
11
10

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-03-31

目次

【Unity】MMDモデルを使ってボールを蹴って物体を壊すゲームを作ろう!
その1
その2
その3
その4
その5
その6(完結)

ステージの作成

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

Prefabの作成

unityではPrefabというものを良く使用します。Prefabとは端的に言うと雛形オブジェクトの事ですが、利用することによって、色々な利点があります。
・同一プレハブならいくつオブジェクトがあってもドローコールが一回だけで済む
・変更を行うと同一プレハブ全てに反映されるため、色をやっぱりこうしようといった変更も一括です。

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

まず、cubeを追加します。

スクリーンショット 2014-03-31 17.23.36.png

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

スクリーンショット 2014-03-31 17.24.45.png

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

スクリーンショット 2014-03-31 17.27.19.png

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

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

スクリーンショット 2014-03-31 17.28.58.png

prefabをステージにscriptで追加

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

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

スクリーンショット 2014-03-31 17.30.49.png

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

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

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

スクリーンショット 2014-03-31 17.38.18.png

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

スクリーンショット 2014-03-31 17.38.46.png

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

スクリーンショット 2014-03-31 17.45.21.png

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

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

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

スクリーンショット 2014-03-31 17.47.11.png

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

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

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

スクリーンショット 2014-03-31 17.50.15.png

その6につづく

これでゲームステージは作成完了です。
次はボールを作成し、このcubeの山をぶっ壊します!

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10