Example #1
0
        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);
            }
        }