void SpawnBozu() { if (bozuAmt < maxBozuAmt) { float spawnX = Random.Range(minX, maxX); float spawnZ = Random.Range(minZ, maxZ); float spawnY = yCoord; Ray ray = new Ray(new Vector3(spawnX, 100f, spawnZ), Vector3.down); RaycastHit hit; bool wallCollide = false; if (Physics.Raycast(ray, out hit)) { if (hit.collider.tag.Equals("wall")) { wallCollide = true; SpawnBozu(); } } Vector3 spawnLoc = new Vector3(spawnX, spawnY, spawnZ); if (!wallCollide && (player == null || Vector3.Distance(spawnLoc, player.transform.position) > 40f)) { GameObject current = Instantiate(bozu, spawnLoc, Quaternion.identity); GhostScript ghost = current.GetComponent <GhostScript>(); ghost.moveSpeed = bozuSpeed; bozuAmt++; if (bozuWander) { ghost.wander = true; ghost.Pause(); } } else { // if (player != null) { SpawnBozu(); } } } }