Unityに関連する記事です

 スピードアップアイテムと矢を一定ごとの確率で1つずつ、ランダムに抽出して生成するように変更します。

 ArrowGeneratorの修正
 ArrowGeneratorに生成するアイテムプレファブをアサインし、生成率を入力


ArrowGeneratorの修正


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ArrowGenerator : MonoBehaviour
{
    public GameObject arrowPrefab;
    
    [Header("スピードアップアイテムのプレファブ")]    // 追加
    public GameObject speedItemPrefab;                // 追加

    [Header("矢の出現率")]                            // 追加
    public int arrowRate;                             // 追加

    [Header("スピードアップアイテムの出現率")]        // 追加
    public int speedItemRate;                         // 追加

    float span = 1.0f;
    float delta = 0;
    public float minSpan = 0.5f;
    public float decSpan;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        // this.span -= this.span * Time.deltaTime;

        
        // float型
        this.delta += Time.deltaTime;
        // Debug.Log(Time.deltaTime);
        if(this.delta > this.span) 
        {
            this.delta = 0;

            /* ここから追加 */

            // インスタンスしたGameObjectを代入するための変数を、空で用意する
            GameObject go = null;

            // 矢の生成率とアイテムの生成率を合計し、その範囲内でランダムな値を1つ取得
            int randomValue = Random.Range(0, (arrowRate + speedItemRate));

            // randomValue の値が 矢の生成率範囲内なら
            if (randomValue < arrowRate) {
                // 矢を生成し、変数に代入
                go = Instantiate(arrowPrefab);
            }
            // randomValue の値が矢の生成率範囲外なら 
            else 
            {
                アイテムを生成し、変数に代入
                go = Instantiate(speedItemPrefab);
            }

            /* ここまで */
           
            int px = Random.Range(-14, 15);
            go.transform.position = new Vector3(px, 7, 0);

            if(this.span > this.minSpan)
            {
                this.span -= this.decSpan;
                //Debug.Log(this.span);

            }
        }
    }
}

ArrowGeneratorに生成するアイテムプレファブをアサインし、各生成率を入力

 
 public 変数がインスペクターに表示されますので、先ほど作成したSpeedUpItemプレファブを
Project内のPrefabフォルダからドラッグアンドドロップでアサインします。

 続いて、矢の生成率とアイテムの生成率を設定します。
合計が100になるようにしておけば「100%のうち、矢が何%、アイテムが何%」という見方が出来ます。

 デバッグを兼ねてゲームを実行してみましょう。
ここでは数値の変化によるデバッグの方法も覚えていきましょう。

まずは矢100、アイテム0で入力してある場合、矢のみ生成されるか確認します。
次は矢0、アイテム100で入力してある場合、アイテムのみ生成されるか確認します。

矢50、アイテム50で入力してある場合、大体、交互位の確率で生成できれば成功と言えるでしょう。

コメントをかく


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

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

Menu



プログラムの基礎学習

コード練習

技術/知識(実装例)

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

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

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

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

レースゲーム(抜粋)

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

3D脱出ゲーム(抜粋)

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

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

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

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

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

VideoPlayer イベント連動の実装例

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

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

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

private



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

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