###前提・実現したいこと
現在unity5.6.1で落ちもの型のパズルゲームを作成しています。
7種類のブロックをランダムに重複なく一つずつ生成し7種類すべて生成したら、またランダムに7種類のブロックを生成と考えてネットを参考にしたところfor文を使うことにしたのでエラーなく動かすため試行錯誤し、ブロックの生成をfor文の中にいれました。
###発生している問題・エラーメッセージ
現在下記のコードではブロックの操作途中に次以降のブロックも出現してしまいます。 7種類のブロックをランダムに重複なく一つずつ生成できない。
###該当のソースコード
c#
using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Net; using UnityEngine.Networking; public class Spawner2 : MonoBehaviour { public GameObject [ ] groups; public void spawnNext(){ //Random Index //// int i = Random.Range(0,groups.Length);//0からgroups.Lengthまでの数値をランダムに返す Random ransu = new Random(); int random =Random.Range(1,8); int [] number = new int [7]; for(int ran = 0;ran < number.Length; ran++) { number[ran] = ran + 1; } for( int ran = 0;ran < number.Length;ran++) { int temp = number[ran]; number[ran] = number[random]; number[random] = temp; }for(int ran = 0;ran < number.Length; ran++) { int i= number[ran]; Instantiate(groups[i], transform.position, Quaternion.identity); } } // Use this for initialization void Start () { spawnNext(); } } ###補足情報 以下のサイトを参考にしました。 http://hatena.hinakana.net/entry/2015/03/07/HelloWorld%E3%81%8B%E3%82%89%E3%81%AEC%23%E5%85%A5%E9%96%80%EF%BC%81%EF%BC%81%E9%87%8D%E8%A4%87%E3%81%97%E3%81%AA%E3%81%84%E4%B9%B1%E6%95%B0%E3%81%A8%E5%A6%B9%E3%81%AE%E5%87%BA%E7%94%A3%EF%BC%81 https://translate.google.co.jp/translate?hl=ja&sl=en&u=https://noobtuts.com/unity/2d-tetris-game/&prev=search
誤解されがちですが、ランダムというのは重複することも許容されるものです。重複しないようにするには、別な工夫が必要となります。例えば、7種類のブロックを用意する代わりに7つの配列を用意し、ブロックのタイプを各配列にシャッフルして入れ、順番に読み込むなどです。ちなみにコードは```で囲っていただくと見易くなります。
回答1件
あなたの回答
tips
プレビュー