void Setup() { //find grid size roomHeight = Mathf.RoundToInt(roomSizeWorldUnits.x / worldUnitsInOneGridCell); roomWidth = Mathf.RoundToInt(roomSizeWorldUnits.y / worldUnitsInOneGridCell); //create grid grid = new gridSpace[roomWidth, roomHeight]; //set grid's default state for (int x = 0; x < roomWidth - 1; x++) { for (int y = 0; y < roomHeight - 1; y++) { //make every cell "empty" grid[x, y] = gridSpace.empty; } } //set first walker //init list walkers = new List <walker>(); //create a walker walker newWalker = new walker(); newWalker.dir = RandomDirection(); playerSpawn = newWalker.dir; //find center of grid Vector2 spawnPos = new Vector2(Mathf.RoundToInt(roomWidth / 2.0f), Mathf.RoundToInt(roomHeight / 2.0f)); newWalker.pos = spawnPos; //add walker to list walkers.Add(newWalker); }
void Setup() { roomHeight = Mathf.RoundToInt(roomSizeWorldUnits.x / worldUnitsInOneGridCell); roomWidth = Mathf.RoundToInt(roomSizeWorldUnits.y / worldUnitsInOneGridCell); grid = new gridSpace[roomWidth, roomHeight]; for (int x = 0; x < roomWidth - 1; x++) { for (int y = 0; y < roomHeight - 1; y++) { grid[x, y] = gridSpace.empty; } } //Inicializar lista walkers = new List <walker>(); //Crear walker walker newWalker = new walker(); newWalker.dir = RandomDirection(); //encontrar centro del grid spawnPos = new Vector2(Mathf.RoundToInt(roomWidth / 2.0f), Mathf.RoundToInt(roomHeight / 2.0f)); newWalker.pos = spawnPos; //agregar walker a lista walkers.Add(newWalker); }
private void Setup() { _newGrid.SetupGrid(); //make sure our tilemaps are clear. Can be an issue after coming from the editor topMap.ClearAllTiles(); botMap.ClearAllTiles(); darkGrassMap.ClearAllTiles(); lightGrassMap.ClearAllTiles(); GenerateNoisemap(); //set first walker _walkers = new List <walker>(); // init list walker newWalker = new walker(); //create a walker newWalker.dir = RandomDirection(); //find center of grid Vector2 spawnPos = new Vector2(Mathf.RoundToInt(_newGrid.roomWidth / 2.0f), Mathf.RoundToInt(_newGrid.roomHeight / 2.0f)); newWalker.pos = spawnPos; //add walker to our list _walkers.Add(newWalker); }
//fungsi untuk membuat ruangan pada permainan void Setup() { //Mencari ukuran Grid berdasarkan ukuran room yang ditentukan //ukuran room yang ditentukan sebesar 30x30 roomHeight = Mathf.RoundToInt(roomSizeWorldUnits.x / worldUnitsInOneGridCell); roomWidth = Mathf.RoundToInt(roomSizeWorldUnits.y / worldUnitsInOneGridCell); //Menciptakan Grid grid = new gridSpace[roomWidth, roomHeight]; //membuat gridspace kosong sebagai default gridspace for (int x = 0; x < roomWidth - 1; x++) { for (int y = 0; y < roomHeight - 1; y++) { grid[x, y] = gridSpace.empty; } } //Membuat list Walker walkers = new List <walker>(); //Menciptakan walker walker newWalker = new walker(); newWalker.dir = RandomDirection(); //Mencari bagian tengah pada Grid Vector2 spawnPos = new Vector2(Mathf.RoundToInt(roomWidth / 2.0f), Mathf.RoundToInt(roomHeight / 2.0f)); newWalker.pos = spawnPos; //Memasukan Walker kedalam walker list walkers.Add(newWalker); // AstarPath.active.Scan(); }
void Setup() { roomHeight = Mathf.RoundToInt(roomSizeWorldUnits.x / worldUnitsInOneGridCell); roomWidth = Mathf.RoundToInt(roomSizeWorldUnits.y / worldUnitsInOneGridCell); grid = new gridSpace[roomWidth, roomHeight]; for (int x = 0; x < roomWidth - 1; x++) { for (int y = 0; y < roomHeight - 1; y++) { grid[x, y] = gridSpace.empty; } } walkers = new List <walker>(); walker newWalker = new walker(); newWalker.dir = RandomDirection(); Vector2 spawnPos = new Vector2(Mathf.RoundToInt(roomWidth / 2f), Mathf.RoundToInt(roomHeight / 2f)); newWalker.pos = spawnPos; walkers.Add(newWalker); }
void Start() { currentHealth = initialHealth; animator = GetComponent <Animator>(); timer = 0; WalkerParticleSystem = GetComponent <ParticleSystem>(); WalkerParticleSystem.Stop(); w = GetComponent <walker> (); }
// Mark grid spaces as floor. void CreateFloors() { int iterations = 0; do { // Mark grid tile as floor at every walker position. foreach (walker myWalker in walkers) { gridTiles[(int)myWalker.pos.x, (int)myWalker.pos.y] = Tile.floor; } // Chance to destroy a walker. int numberChecks = walkers.Count; for (int i = 0; i < numberChecks; i++) { if (walkers.Count > 1 && Random.value < walkerDestroyPerc) { walkers.RemoveAt(i); break; } } // Chance for walker to chance direction. for (int i = 0; i < walkers.Count; i++) { if (Random.value < walkerChangeDirPerc) { walker thisWalker = walkers[i]; thisWalker.dir = RandomDirection(); walkers[i] = thisWalker; } } // Chance to spawn a new walker. numberChecks = walkers.Count; for (int i = 0; i < numberChecks; i++) { if (Random.value < walkerSpawnPerc && walkers.Count < maxWalkers) { walker newWalker = new walker(); newWalker.dir = RandomDirection(); newWalker.pos = walkers[i].pos; walkers.Add(newWalker); } } // Move walkers. for (int i = 0; i < walkers.Count; i++) { walker thisWalker = walkers[i]; thisWalker.pos += thisWalker.dir; walkers[i] = thisWalker; } // Avoid boarders of the grid to leave at least 1 tile for walls. for (int i = 0; i < walkers.Count; i++) { walker thisWalker = walkers[i]; thisWalker.pos.x = Mathf.Clamp(thisWalker.pos.x, 1, gridSizeX-2); // -(nodeDiameter*2) ??? thisWalker.pos.y = Mathf.Clamp(thisWalker.pos.y, 1, gridSizeY-2); walkers[i] = thisWalker; } if ((float)NumberOfFloors() / (float)gridTiles.Length > gridPercToFill) { break; } iterations++; }while(iterations < 9999); }
public override void EvtCreate() { cur_depth = 0; depth = 500; width = 1000; height = 1000; grid_size = 16; Xgrids = width / grid_size; Ygrids = height / grid_size; walkers = new List <walker>(); walkerGen = new walker(); walkerGen2 = new walker(); walkers.Add(walkerGen); walkerGen.pos = new Vector2(width / 2, height / 2); }
void Setup() { tileDiameter = tileRadius*2; gridSizeX = Mathf.RoundToInt(tileGridWorldSize.x / tileDiameter); gridSizeY = Mathf.RoundToInt(tileGridWorldSize.y / tileDiameter); gridTiles = new Tile[gridSizeX, gridSizeY]; for (int x = 0; x < gridSizeX-1; x++) { for (int y = 0; y < gridSizeY-1; y++) { gridTiles[x,y] = Tile.empty; } } // Setup the first walker in the middle of the grid. walkers = new List<walker>(); walker newWalker = new walker(); newWalker.dir = RandomDirection(); Vector2 spawnPos = new Vector2(Mathf.RoundToInt(gridSizeX/2f), Mathf.RoundToInt(gridSizeY/2f)); newWalker.pos = spawnPos; walkers.Add(newWalker); }
void Setup() { //find grid size roomHeight = Mathf.RoundToInt(roomSizeWorldUnits.x); roomWidth = Mathf.RoundToInt(roomSizeWorldUnits.y); //create grid grid = new bool[roomWidth, roomHeight]; names = new string[roomWidth, roomHeight]; possibleBoss = new List <Vector2>(); possibleInit = new List <Vector2>(); //set grid's default state for (int x = 0; x < roomWidth - 1; x++) { for (int y = 0; y < roomHeight - 1; y++) { grid[x, y] = false; names[x, y] = ""; } } roomScript = GetComponent <RoomCreator>(); //set first walker //init list walkers = new List <walker>(); //create a walker walker newWalker = new walker(); newWalker.dir = RandomDirection(); //find center of grid Vector2 spawnPos = new Vector2(Mathf.RoundToInt(roomWidth / 2.0f), Mathf.RoundToInt(roomHeight / 2.0f)); newWalker.pos = spawnPos; //add walker to list walkers.Add(newWalker); }
private void CreateFloors() { int iteration = 0; do { // Create floor at position of every walker foreach (walker myWalker in walkers) { grid[(int)myWalker.pos.x, (int)myWalker.pos.y] = gridSpace.floor; } // Chance: destroy walker int numberChecks = walkers.Count; for (int i = 0; i < numberChecks; i++) { if (UnityEngine.Random.value < level.chanceWalkerDestroy && walkers.Count > 1) { walkers.RemoveAt(i); break; } } // Chance: walker pick new direction for (int i = 0; i < walkers.Count; i++) { if (UnityEngine.Random.value < level.chanceWalkerChangeDir) { walker thisWalker = walkers[i]; thisWalker.dir = RandomDirection(); walkers[i] = thisWalker; } } // Chance: spawn new walker numberChecks = walkers.Count; for (int i = 0; i < numberChecks; i++) { if (UnityEngine.Random.value < level.chanceWalkerSpawn && walkers.Count < level.maxWalkers) { walker newWalker = new walker(); newWalker.dir = RandomDirection(); newWalker.pos = walkers[i].pos; walkers.Add(newWalker); } } // Move walkers for (int i = 0; i < walkers.Count; i++) { walker thisWalker = walkers[i]; thisWalker.pos += thisWalker.dir; walkers[i] = thisWalker; } // Avoid boarder of grid for (int i = 0; i < walkers.Count; i++) { walker thisWalker = walkers[i]; thisWalker.pos.x = Mathf.Clamp(thisWalker.pos.x, 1, roomWidth - 2); thisWalker.pos.y = Mathf.Clamp(thisWalker.pos.y, 1, roomHeight - 2); walkers[i] = thisWalker; } // Check to exit loop if ((float)NumberOfFloors() / (float)grid.Length > level.percentToFill) { break; } iteration++; } while (iteration < 100000); }
void CreateFloors() { int iterations = 0; do { foreach (walker myWalker in walkers) { grid[(int)myWalker.pos.x, (int)myWalker.pos.y] = gridSpace.floor; } int numberChecks = walkers.Count; for (int i = 0; i < numberChecks; i++) { if (Random.value < walkerDestroyChance && walkers.Count > 1) { walkers.RemoveAt(i); break; } } for (int i = 0; i < walkers.Count; i++) { if (Random.value < walkerDirChangeChance) { walker thisWalker = walkers[i]; thisWalker.dir = RandomDirection(); walkers[i] = thisWalker; } } numberChecks = walkers.Count; for (int i = 0; i < numberChecks; i++) { if (Random.value < walkerSpawnChance && walkers.Count < maxWalkers) { walker newWalker = new walker(); newWalker.dir = RandomDirection(); newWalker.pos = walkers[i].pos; walkers.Add(newWalker); } } for (int i = 0; i < walkers.Count; i++) { walker thisWalker = walkers[i]; thisWalker.pos += thisWalker.dir; walkers[i] = thisWalker; } for (int i = 0; i < walkers.Count; i++) { walker thisWalker = walkers[i]; thisWalker.pos.x = Mathf.Clamp(thisWalker.pos.x, 1, roomWidth - 2); thisWalker.pos.y = Mathf.Clamp(thisWalker.pos.y, 1, roomHeight - 2); walkers[i] = thisWalker; } if ((float)NumberOfFloors() / (float)grid.Length > percentToFill) { break; } iterations++; } while (iterations < 100000); }
IEnumerator CreateFloors() { int iterations = 0; //loop tidak akan bekerja untuk selamanya do { bool spawned = false; //membuat template lantai pada setiap posisi walker yang disimpan dari walker list foreach (walker myWalker in walkers) { if (grid[(int)myWalker.pos.x, (int)myWalker.pos.y] != gridSpace.floor) { Spawn(myWalker.pos.x, myWalker.pos.y, floorObj); //update visuals spawned = true; } grid[(int)myWalker.pos.x, (int)myWalker.pos.y] = gridSpace.floor; } //Kemungkinan untuk menghapus suatu walker int numberChecks = walkers.Count; for (int i = 0; i < numberChecks; i++) { //apabila Counter Walker dimulai lebih dari 1 //dan memiliki kemungkinan lebih rendah untuk dihancurkan if (Random.value < chanceWalkerDestoy && walkers.Count > 1) { walkers.RemoveAt(i); Debug.Log(walkers.Count); break; } } //Kemungkinan untuk walker mengambil arah baru dari list for (int i = 0; i < walkers.Count; i++) { //apabila random value yang didapat lebih kecil dari kemungkinan mengambil arah baru if (Random.value < chanceWalkerChangeDir) { walker thisWalker = walkers[i]; thisWalker.dir = RandomDirection(); walkers[i] = thisWalker; } } //Kemungkinan untuk menciptakan walker yang baru numberChecks = walkers.Count; for (int i = 0; i < numberChecks; i++) { //apabila random value yang didapat lebih kecil dari kemungkinan menciptakan walker baru //dan cap jumlah walker agar tidak melebihi walker yang dibuat if (Random.value < chanceWalkerSpawn && walkers.Count < maxWalkers) { walker newWalker = new walker(); newWalker.dir = RandomDirection(); newWalker.pos = walkers[i].pos; walkers.Add(newWalker); } } //Menggerakkan walker for (int i = 0; i < walkers.Count; i++) { walker thisWalker = walkers[i]; thisWalker.pos += thisWalker.dir; walkers[i] = thisWalker; } //membatasi walker agar tidak keluar dari grid for (int i = 0; i < walkers.Count; i++) { walker thisWalker = walkers[i]; //membuat ruang untuk dinding thisWalker.pos.x = Mathf.Clamp(thisWalker.pos.x, 1, roomWidth - 2); thisWalker.pos.y = Mathf.Clamp(thisWalker.pos.y, 1, roomHeight - 2); walkers[i] = thisWalker; } //mengecek iterasi if ((float)NumberOfFloors() / (float)grid.Length > percentToFill) { break; } iterations++; if (spawned) { yield return(new WaitForSeconds(timeBetweenLoops)); //make it wait } }while(iterations < 100000); StartCoroutine(CreateWalls()); }
void CreateFloors() { int iterations = 0;//loop will not run forever do { //create floor at position of every walker foreach (walker myWalker in walkers) { grid[(int)myWalker.pos.x, (int)myWalker.pos.y] = gridSpace.floor; } //chance: destroy walker int numberChecks = walkers.Count; //might modify count while in this loop for (int i = 0; i < numberChecks; i++) { //only if its not the only one, and at a low chance if (Random.value < chanceWalkerDestoy && walkers.Count > 1) { walkers.RemoveAt(i); break; //only destroy one per iteration } } //chance: walker pick new direction for (int i = 0; i < walkers.Count; i++) { if (Random.value < chanceWalkerChangeDir) { walker thisWalker = walkers[i]; thisWalker.dir = RandomDirection(); walkers[i] = thisWalker; } } //chance: spawn new walker numberChecks = walkers.Count; //might modify count while in this loop for (int i = 0; i < numberChecks; i++) { //only if # of walkers < max, and at a low chance if (Random.value < chanceWalkerSpawn && walkers.Count < maxWalkers) { //create a walker walker newWalker = new walker(); newWalker.dir = RandomDirection(); newWalker.pos = walkers[i].pos; walkers.Add(newWalker); } } //move walkers for (int i = 0; i < walkers.Count; i++) { walker thisWalker = walkers[i]; thisWalker.pos += thisWalker.dir; walkers[i] = thisWalker; } //avoid boarder of grid for (int i = 0; i < walkers.Count; i++) { walker thisWalker = walkers[i]; //clamp x,y to leave a 1 space boarder: leave room for walls thisWalker.pos.x = Mathf.Clamp(thisWalker.pos.x, 1, roomWidth - 2); thisWalker.pos.y = Mathf.Clamp(thisWalker.pos.y, 1, roomHeight - 2); walkers[i] = thisWalker; } //check to exit loop if ((float)NumberOfFloors() / (float)grid.Length > percentToFill) { break; } iterations++; } while (iterations < 100000); }
void CreateFloors() { int iterations = 0; do { //poner piso en la pos de cada walker for (int i = 0; i < walkers.Count; i++) { grid[(int)walkers[i].pos.x, (int)walkers[i].pos.y] = gridSpace.floor; } //chance: destruir walker int numberChecks = walkers.Count; for (int i = 0; i < numberChecks; i++) { if (Random.value < chanceWalkerDestroy && walkers.Count > 1) { walkers.RemoveAt(i); break; //destruye 1 por iteraciĆ³n } } //chance: walker elige nueva dir for (int i = 0; i < walkers.Count; i++) { if (Random.value < chanceWalkerChangeDir) { walker thisWalker = walkers[i]; thisWalker.dir = RandomDirection(); walkers[i] = thisWalker; } } //chance:spawn new walker numberChecks = walkers.Count; for (int i = 0; i < numberChecks; i++) { if (Random.value < chanceWalkerSpawn && walkers.Count < maxWalkers) { walker newWalker = new walker(); newWalker.dir = RandomDirection(); newWalker.pos = walkers[i].pos; walkers.Add(newWalker); } } //mover walkers for (int i = 0; i < walkers.Count; i++) { walker thisWalker = walkers[i]; Vector3 walkerDir = thisWalker.dir; thisWalker.pos += walkerDir; walkers[i] = thisWalker; } //evitar borde for (int i = 0; i < walkers.Count; i++) { walker thisWalker = walkers[i]; thisWalker.pos.x = Mathf.Clamp(thisWalker.pos.x, 1, roomWidth - 2); thisWalker.pos.y = Mathf.Clamp(thisWalker.pos.y, 1, roomHeight - 2); walkers[i] = thisWalker; } //romper loop if ((float)NumberOfFloors() / (float)grid.Length > percentToFill) { break; } iterations++; } while (iterations < 100000); grid[(int)spawnPos.x, (int)spawnPos.y] = gridSpace.spawn; }
void CreateFloors() { int iterations = 0;//sentinel value for loop do { foreach (walker myWalker in walkers) { grid[(int)myWalker.pos.x, (int)myWalker.pos.y] = gridSpace.floor; } //chance:: to destroy walker int numberChecks = walkers.Count; //might modify count while in this loop for (int i = 0; i < numberChecks; i++) { if (Random.value < chanceWalkerDestroy && walkers.Count > 1) { walkers.RemoveAt(i); break; // ensures you only destroy one per interation } } //chance:: to change direction for (int i = 0; i < walkers.Count; i++) { if (Random.value < chanceWalkerChangeDir) { walker thisWalker = walkers[i]; thisWalker.dir = RandomDirection(); walkers[i] = thisWalker; } } //chance:: spawn new walker numberChecks = walkers.Count;// Might modify count while in this loop for (int i = 0; i < numberChecks; i++) { //only if# of walkers < max, and at a low chance if (Random.value < chanceWalkerCreate && walkers.Count < MAX_WALKERS) { walker newWalker = new walker(); newWalker.dir = RandomDirection(); newWalker.pos = walkers[i].pos; walkers.Add(newWalker); } } //move the walkers for (int i = 0; i < walkers.Count; i++) { walker thisWalker = walkers[i]; thisWalker.pos += thisWalker.dir; // uses the random direction function walkers[i] = thisWalker; } //avoid end of map for (int i = 0; i < walkers.Count; i++) { walker thisWalker = walkers[i]; //clamp x,y to leave 1 space available for walls thisWalker.pos.x = Mathf.Clamp(thisWalker.pos.x, 1, roomWidth - 2); thisWalker.pos.y = Mathf.Clamp(thisWalker.pos.y, 1, roomHeight - 2); walkers[i] = thisWalker; } //check to exit the loop if ((float)NumberOfFloors() / (float)grid.Length > percentToFill) { break; } iterations++; } while (iterations < 100000); }
IEnumerator FloorLoop() { int iterations = 0; //loop will not run forever do { bool spawned = false; //create floor at position of every walker foreach (walker myWalker in walkers) { if (grid[(int)myWalker.pos.x, (int)myWalker.pos.y] != gridSpace.floor) { Spawn(myWalker.pos.x, myWalker.pos.y, floorObj); //update visuals spawned = true; } grid[(int)myWalker.pos.x, (int)myWalker.pos.y] = gridSpace.floor; } //chance: destroy walker int numberChecks = walkers.Count; //might modify count while in this loop for (int i = 0; i < numberChecks; i++) { //only if its not the only one, and at a low chance if (Random.value < chanceWalkerDestoy && walkers.Count > 1) { walkers.RemoveAt(i); break; //only destroy one per iteration } } //chance: walker pick new direction for (int i = 0; i < walkers.Count; i++) { if (Random.value < chanceWalkerChangeDir) { walker thisWalker = walkers[i]; thisWalker.dir = RandomDirection(); walkers[i] = thisWalker; } } //chance: spawn new walker numberChecks = walkers.Count; //might modify count while in this loop for (int i = 0; i < numberChecks; i++) { //only if # of walkers < max, and at a low chance if (Random.value < chanceWalkerSpawn && walkers.Count < maxWalkers) { //create a walker walker newWalker = new walker(); newWalker.dir = RandomDirection(); newWalker.pos = walkers[i].pos; walkers.Add(newWalker); } } //move walkers for (int i = 0; i < walkers.Count; i++) { walker thisWalker = walkers[i]; thisWalker.pos += thisWalker.dir; walkers[i] = thisWalker; } //avoid boarder of grid for (int i = 0; i < walkers.Count; i++) { walker thisWalker = walkers[i]; //clamp x,y to leave a 1 space boarder: leave room for walls thisWalker.pos.x = Mathf.Clamp(thisWalker.pos.x, 1, roomWidth - 2); thisWalker.pos.y = Mathf.Clamp(thisWalker.pos.y, 1, roomHeight - 2); walkers[i] = thisWalker; } //check to exit loop if ((float)NumberOfFloors() / (float)grid.Length > percentToFill) { break; } iterations++; if (spawned) { yield return(new WaitForSeconds(timeBetweenLoops)); //make it wait } }while(iterations < 100000); StartCoroutine(CreateWalls()); //move to next step }
// Start is called before the first frame update void Start() { GameObject walkerGameObject = new GameObject(); walker = walkerGameObject.AddComponent <walker>(); }
/// <summary> /// Use walkers to create walkable areas /// </summary> private void CreateFloors() { UnityEngine.Profiling.Profiler.BeginSample("Create Floors"); int iterations = 0; // Just want to keep track of how many times we've looped so we don't get an infinite loop. This is just in case int numberOfFloors = 0; GridHandler.gridSpace floorTile = GridHandler.gridSpace.floor; do { //create floor at position of every walker foreach (walker myWalker in _walkers) { _newGrid.SetTile((int)myWalker.pos.x, (int)myWalker.pos.y, floorTile); numberOfFloors++; //Make the path 2 tiles thick: //If we're moving up or down, also create the tile to the right of the path if ((int)myWalker.dir.y != 0) { _newGrid.SetTile((int)myWalker.pos.x + 1, (int)myWalker.pos.y, floorTile); numberOfFloors++; } //If we're moving left or right, also create the tile to above the path if ((int)myWalker.dir.x != 0) { _newGrid.SetTile((int)myWalker.pos.x, (int)myWalker.pos.y + 1, floorTile); numberOfFloors++; } } //chance: destroy walker int numberChecks = _walkers.Count; //see how many walkers we have for (int i = 0; i < numberChecks; i++) { //only if it's not the only one, and only rarely if (Random.value < ChanceWalkerDestroy && _walkers.Count > 1) { _walkers.RemoveAt(i); break; //only want to destroy one per iteration } } //chance: walker picks new direction for (int i = 0; i < _walkers.Count; i++) { if (Random.value < ChanceWalkerChangeDir) { walker thisWalker = _walkers[i]; thisWalker.dir = RandomDirection(); _walkers[i] = thisWalker; } } //chance: spawn new walker numberChecks = _walkers.Count; //update how many walkers since we may have destroyed one for (int i = 0; i < numberChecks; i++) { //only if we don't have too many walkers, and only rarely if (Random.value < ChanceWalkerSpawn && _walkers.Count < MaxWalkers) { //create a walker and initialize it walker newWalker = new walker(); newWalker.dir = RandomDirection(); newWalker.pos = _walkers[i].pos; _walkers.Add(newWalker); } } //move walkers for (int i = 0; i < _walkers.Count; i++) { walker thisWalker = _walkers[i]; thisWalker.pos += thisWalker.dir; _walkers[i] = thisWalker; } //avoid grid border for (int i = 0; i < _walkers.Count; i++) { walker thisWalker = _walkers[i]; //clamp x,y to leave a 10 slot space around the edges where we can put other items thisWalker.pos.x = Mathf.Clamp(thisWalker.pos.x, 10, _newGrid.roomWidth - 10); thisWalker.pos.y = Mathf.Clamp(thisWalker.pos.y, 10, _newGrid.roomHeight - 10); _walkers[i] = thisWalker; } //check if we want to exit the loop if (numberOfFloors / _newGrid.GetGridLength() > PercentToFill) { break; } iterations++; } while (iterations < 100000); UnityEngine.Profiling.Profiler.EndSample(); }