Question by 
               RoyaltyMisha · Mar 01, 2018 at 08:42 AM · 
                instantiaterandom.range  
              
 
              Random.Range does not work in the specified range
Hi, I found a bug. For some reason when i try to use min and max value for Random.Range it's dosn't work correct. If I set the minimum value of 10, can fall 2 for example. I found that Random.Range does not work correctly with int and need to use float. But it does not help.
Thank you!

 using Random = UnityEngine.Random;
 using System.Collections.Generic;
 using System;
 using UnityEngine;
 
 public class LevelCreator : MonoBehaviour {
 
     [Serializable]
     public class Count
     {
         public float minimum;
         public float maximum;
 
         public Count (float min, float max)
         {
             minimum = min;
             maximum = max;
         }
     }
 
     public Vector3 offset;
     public int columns;
     public int rows;
     public Count volumeObject = new Count (16, 32);
     public GameObject[] innerQuad;
     public GameObject[] outerQuad;
     public GameObject[] object3D;
     private List <Vector3> gridPosition = new List <Vector3> ();
 
 
     void Start ()
     {
         LevelSetup ();
         InitialiseList ();
         LayoutObjectAtRandom (object3D, volumeObject.minimum, volumeObject.maximum);
     }
 
     void InitialiseList()
     {
         gridPosition.Clear ();
 
         for (int x = 1; x < columns -1; x++) 
         {
             for (int y = 1; y < rows - 1; y++) 
             {
                 gridPosition.Add (new Vector3 (x, y, 0f));
             }
         }
     }
 
 
     void LevelSetup()
     {
         for (int x = -1; x < columns + 1; x++) 
         {
             for (int y = -1; y < rows + 1; y++) 
             {
                 GameObject toInstantiate = innerQuad [Random.Range(0, innerQuad.Length)];
                 if (x == -1 || x == columns || y == -1 || y == rows) 
                 {
                     toInstantiate = outerQuad [Random.Range(0, outerQuad.Length)];
                 }
 
                 Instantiate (toInstantiate, new Vector3 (x, y, 0f), Quaternion.identity);
             }
         }
     }
 
     Vector3 RandomPosition()
     {
         int randomIndex = Random.Range (0, gridPosition.Count);
         Vector3 randomPosition = gridPosition [randomIndex];
         gridPosition.RemoveAt (randomIndex);
         return randomPosition;
     }
 
     void LayoutObjectAtRandom (GameObject[] tileArray, float minimum, float maximum)
     {
         float objectCount = Random.Range (minimum, maximum + 1);
 
         for (float i = 0; i < objectCount; i++) 
         {            
             Vector3 randomPosition = RandomPosition ();
             GameObject randomObject3D = tileArray [Random.Range (0, tileArray.Length)];
             Instantiate (randomObject3D, randomPosition + offset, Quaternion.identity);
         }
 
     }
 
 }
 
               
                 
                example.png 
                (369.7 kB) 
               
 
              
               Comment
              
 
               
              Your answer
 
             Follow this Question
Related Questions
local scale not working? 2 Answers
Random.range game object destroying itself before reaching destroy position.Please help. 1 Answer
Instaniate not working with Random.Range 1 Answer
C# Instantiate multiple objects at unique positions within a set range 1 Answer
Random position of asteroids -- Random not randomizing? 1 Answer