ランダム値から何個か取得するやり方などいろいろみましたがやり方がわからず
コライダーを使うやり方やら座標を使うやり方などあると思いますがよかったら教えてください
後forの繰り返すを3000回にしても3000繰り返してないのですがちょっと仕組みがわからないのでおしえてください
using System.Collections; using System.Collections.Generic; using UnityEngine; public class random : MonoBehaviour { public GameObject [] cube; // Start is called before the first frame update void Start() { for(int i = 0; i < 100; i++) { float x = Random.Range(0.0f, 500.0f); float y = Random.Range(1.19f, 1.19f); float z = Random.Range(0.0f, 500.0f); Instantiate(cube [0], new Vector3(x, y, z), Quaternion.identity); i+=1; } for(int i = 0; i < 3000; i++) { float x = Random.Range(0.0f, 500.0f); float y = Random.Range(2.2f, 2.2f); float z = Random.Range(0.0f, 500.0f); Instantiate(cube [1], new Vector3(x, y, z), Quaternion.identity); i+=1; } for(int i = 0; i < 50; i++) { float x = Random.Range(0.0f, 500.0f); float y = Random.Range(1.19f, 1.19f); float z = Random.Range(0.0f, 500.0f); Instantiate(cube [2], new Vector3(x, y, z), Quaternion.identity); i+=1; } for(int i = 0; i < 10; i++) { float x = Random.Range(0.0f, 500.0f); float y = Random.Range(1.19f, 1.19f); float z = Random.Range(0.0f, 500.0f); Instantiate(cube [3], new Vector3(x, y, z), Quaternion.identity); i+=1; } for(int i = 0; i < 1000; i++) { float x = Random.Range(0.0f, 500.0f); float y = Random.Range(0.5f, 0.5f); float z = Random.Range(0.0f, 500.0f); Instantiate(cube [4], new Vector3(x, y, z), Quaternion.identity); i+=1; } }
「重複しない」は「オブジェクト同士が重ならない」の意味ですか?
それとも「数値が同じではない」の意味ですか?もしこちらならfloatの場合、どこまで有効かを決める必要があるかと思います(小数点以下を考えると現状でも「全く同じ値」ということは出ないと思います)。
3000回繰り返しについては、forの内部の「i+=1;」が余計です。
「for(int i = 0; i < 100; i++)」ここの「i++」が「1ループ毎にiを+1する」の意味なので、for内部で「i+=1;」が存在すると合わせて1ループ毎にiが+2されている(よって規定値の半分の回数しか回らない)ことになります。
オブジェクト同士が重ならないようにしたいです。
floatはスクリプト同士で計算しているから、後ほどintに直す予定です。
繰り返しはできました。ありがとうございます。
回答1件
あなたの回答
tips
プレビュー