【Unity】2Dシューティングを作る ~敵のランダム生成~

unity

プレイするゲームがないなら、自分で作ればいいじゃない!

ということで Unity 初心者が「ゲームを作る」ゲームをやっていきます!

今回は「敵をランダムで生成してみた」の記事です

 

スポンサーリンク

内容

敵の位置や種類をランダムな値を使って生成する

 

敵の生成方法を考える

今はただ敵が2体配置されているだけ

これではつまらないので、敵を生成する何かを作りたい

 

どうやって生成するかを考える

パっと出てくるのは

  • 時間でランダム
  • 時間、位置、種類等を細かく設定する

細かく設定すると時間がかかるので、今回はランダムでやってみることに

 

敵を生成するオブジェクトを作る

「時間、位置、種類」を設定したら勝手に生み出す感じです

空のオブジェクトを作成して⇒スクリプトを追加

 

ランダム生成のスクリプト

public class EnemyRandomGenerator : MonoBehaviour
{
    [SerializeField] List<GameObject> enemyList;    // 生成オブジェクト
    [SerializeField] Transform pos;                 // 生成位置
    [SerializeField] Transform pos2;                // 生成位置
    float minX, maxX, minY, maxY;                   // 生成範囲

    int frame = 0;
    [SerializeField] int generateFrame = 30;        // 生成する間隔

    void Start()
    {
        minX = Mathf.Min(pos.position.x, pos2.position.x);
        maxX = Mathf.Max(pos.position.x, pos2.position.x);
        minY = Mathf.Min(pos.position.y, pos2.position.y);
        maxY = Mathf.Max(pos.position.y, pos2.position.y);
    }

    void Update()
    {
        ++frame;

        if (frame > generateFrame)
        {
            frame = 0;

            // ランダムで種類と位置を決める
            int index = Random.Range(0, enemyList.Count);
            float posX = Random.Range(minX, maxX);
            float posY = Random.Range(minY, maxY);

            Instantiate(enemyList[index], new Vector3(posX, posY, 0), Quaternion.identity);
        }
    }
}
enemyList, pos, pos2, generateFrame の設定
こんな感じに

 

Random.Range(min, max)

これで「min~max」の範囲でランダムな値を取得できる

int と float で動作が異なり

  • int は min ~ max-1 の値を返す
  • float は min ~ max の値を返す

(min,max) となっているが Range(10, -10) でも、

中で値を入れ替えてくれるので正常に動作する

 

サンプル動画

 

敵は生成できたが…

サンプル動画にも見られるように

  • 同じ種類の敵が連続して出現
  • 同じような位置で連続して出現

と、全てをランダムに任せると「ゲームの調整が難しくなってしまう」

これからアイテムを落とす等、要素を増やしていくとして

それらもランダムだと、より調整難易度が上がっていきます…

 

さいごに

ランダムに任せる仕様ではゲームを作るのは難しい…

ゲームにするためには仕様を練ることが大切なのだと知った

 

かれいど

ゲームをしたり、作ったり
色々な事に挑戦していきたい!

サッカー観戦も趣味で
主にJ1リーグを観ています。

かれいどをフォローする
unity
スポンサーリンク
シェアする
かれいどブログ

コメント