Unityに関連する記事です

設計


 先ほど作成し、2つ以上の種類になったブロックをランダムに選択して、ゲーム画面に生成し、配置するようにします。
ブロックの耐久力や得点が異なりますし、ゲーム実行のたびにランダム生成されますので、ゲーム性が非常に上がります。

実装手順


1.BoxInit.csスクリプトを修正します。
2.ゲームを実行し、BoxInitのboxPrefabs配列に登録したブロックがランダムで生成されて並ぶかを確認します。

1.BoxInit.csスクリプトを修正します。


 このスクリプトでは従来、順番にBoxを生成していますので、生成する順番はそのままに、生成されるBoxの内容をランダムなものに変更します。

BoxInit.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BoxInit : MonoBehaviour {

    public GameObject [] boxObjPrefabs;  // 配列に変更します。外部で生成したいプレファブを指定(BoxのPrefabはboxObjPrefabs[0]、HardBoxのPrefabはboxObjPrefabs[1]にアサインする、など)
    public GameObject boxesObj;          // BoxesオブジェクトはboxesObj変数に格納される。

    //Awake関数内の処理はStartよりも先に実行される。
    void Awake() {

        //Hierarchyタブの中からMasterゲームオブジェクトを探してmasterobjに格納
        GameObject masterObj = GameObject.Find("Master"); 

        for (int x = 0; x < 8; x++) {
            for (int y = 0; y < 5; y++) {
                //0から配列boxObjPrefabsの要素数-1までの範囲で乱数を作って、それをrandomValueに格納する。要素数が2の場合には、0か1が格納される。   <- ここから
                int randomValue = Random.Range(0, boxObjPrefabs.Length);     
                         
                //Box、またはHardBoxを複製し、gに格納する(複製してできたオブジェクトは、boxesObjに格納されているBoxesゲームオブジェクトの子オブジェクトとなる)。
                GameObject g = Instantiate(boxObjPrefabs[randomValue], boxesObj.transform);                                              // <- ここまで追加

                //複製してできたオブジェクトの位置の変更
                g.transform.position = new Vector3((2f + (1f * y)), 0.4f, (-4.2f + (1.2f * x)));

                //DestroyerスクリプトのmasterobjにMasterゲームオブジェクトを格納
        g.GetComponent<Destroyer>().masterObj = masterObj; 
            }
        }
    }

    // Use this for initialization
    void Start () {

    }

    // Update is called once per frame
    void Update () {

    }
}

 修正が完了したらヒエラルキーにあるHakoゲームオブジェクトのインスペクターを確認します。

 生成するBoxプレファブの種類は配列になっており、この情報はインスペクターにて変更が可能です。

 BoxPrefabs の変数は Sizeが0になっていますので、そちらを生成したい種類のBox数にします。例えば、4つBoxのプレファブを用意している場合には、Size 4 に設定してください。
その後、Element という項目が Element 0 -4 まで追加されます。

 こちらにはBoxのプレファブ・ゲームオブジェクトをアサインが可能になりますので、Prefabsフォルダにある各Boxのプレファブ・オブジェクトを順番に選択してアサインします。
ヒエラルキーにあるBoxのプレファブではなくて、必ず、Project内のPrefabsフォルダにあるBoxをドラッグアンドドロップしてアサインしてください。(こちらが設計図です)

 これで生成される種類のBoxの指定が完了しました。(下記の画像はSize 2 の場合です)



2.ゲームを実行し、BoxInitのboxPrefabs配列に登録したブロックがランダムで生成されて並ぶかを確認します。


 何回か実行して確認してみましょう。

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

2Dおはじきゲーム(発展編)

2D強制横スクロールアクション(発展編)

3Dダイビングアクション(発展編)

2Dタップシューティング(拡張編)

レースゲーム(抜粋)

2D放置ゲーム(発展編)

3D脱出ゲーム(抜粋)

2Dリアルタイムストラテジー

2Dトップビューアドベンチャー(宴アセット使用)

3Dタップアクション(NavMeshAgent 使用)

2Dトップビューアクション(カエルの為に〜、ボコスカウォーズ風)

3Dトップビューアクション(白猫風)

VideoPlayer イベント連動の実装例

VideoPlayer リスト内からムービー再生の実装例(発展)

AR 画像付きオブジェクト生成の実装例

AR リスト内から生成の実装例(発展)

private



このサイト内の作品はユニティちゃんライセンス条項の元に提供されています。

管理人/副管理人のみ編集できます