private void Spawning() { if (countdown < 0) { bool positive = (Random.Range(0f, 1f) < positivePrefabChance); if (positive) { int prefabIndex = Random.Range(0, positivePrefabs.Length); int roadwayIndex = percentPerRoadway.GetLowest(); poolManager.Spawn(positivePrefabs[prefabIndex], new Vector3(road.Roadways[roadwayIndex], yOffset + transform.position.y, 0), Quaternion.identity); // Change chance based on randomizated road for positive outcome percentPerRoadway.ChangeChance(roadwayIndex, 0.2f); } else { int prefabIndex = Random.Range(0, negativePrefabs.Length); int roadwayIndex = percentPerRoadway.GetRandom(); poolManager.Spawn(negativePrefabs[prefabIndex], new Vector3(road.Roadways[roadwayIndex], yOffset + transform.position.y, 0), Quaternion.identity); // Change chance based on randomizated road for negative outcome percentPerRoadway.ChangeChance(roadwayIndex, -0.005f); } countdown = time; } countdown -= Time.deltaTime; }
private void Update() { Vector3 pos = (transform.position + offset); if (lastY + distance < pos.y) { lastY += distance; Vector3 spawnPos = pos; spawnPos.y = lastY; poolManager.Spawn(prefabIdentificator, spawnPos, Quaternion.identity); } }
private void Start() { poolManager = PoolSystem.PoolManager.Instance; Vector3 pos = (transform.position + offset); lastY = pos.y; poolManager.Spawn(prefabIdentificator, pos, Quaternion.identity); for (int i = 0; i < preSpawnOnStart; i++) { Vector3 newPos = pos; newPos.y -= distance * (i + 1); Instantiate(preSpawnPrefab, newPos, Quaternion.identity); } }