Esempio n. 1
0
    public void Initialise()
    {
        spawned            = transform.GetComponentsInChildren <ObjectScroller>().ToList();
        lastYSpawnPosition = Random.Range(lifeSpanCollider.bounds.min.y, lifeSpanCollider.bounds.max.y);;

        foreach (ObjectScroller scroller in spawned)
        {
            float speed = randomiseSpeed ? Random.Range(minSpeed, maxSpeed) : (maxSpeed + minSpeed) * 0.5f;

            scroller.SetScrollingObject(speed, lifeSpanCollider);
            lastSpawned = scroller;
        }

        float nextSpawnDistance = Random.Range(minDistanceApart, maxDistanceApart);

        spawnSub = this.UpdateAsObservable()
                   .Where(_ => GameManager.instance.Difficulty != GameDifficulty.Stop)
                   .Subscribe(_ => CheckCanSpawn(nextSpawnDistance));
    }
Esempio n. 2
0
    private void SpawnObject()
    {
        float minY = lifeSpanCollider.bounds.min.y;
        float maxY = lifeSpanCollider.bounds.max.y;

        if (considerHeightApart)
        {
            minY = Mathf.Clamp(lastYSpawnPosition - maxHeightApart, lifeSpanCollider.bounds.min.y, lifeSpanCollider.bounds.max.y);
            maxY = Mathf.Clamp(lastYSpawnPosition + maxHeightApart, lifeSpanCollider.bounds.min.y, lifeSpanCollider.bounds.max.y);
        }

        lastYSpawnPosition = Random.Range(minY, maxY);
        ObjectScroller newObject = Instantiate(spawnPrefabs[Random.Range(0, spawnPrefabs.Count)], new Vector3(spawnXPosition, lastYSpawnPosition, 0), Quaternion.identity, transform).GetComponent <ObjectScroller>();

        float speed = randomiseSpeed ? Random.Range(minSpeed, maxSpeed) : (maxSpeed + minSpeed) * 0.5f;

        newObject.SetScrollingObject(speed, lifeSpanCollider);
        newObject.StartScroll();

        spawned.Add(newObject);
        lastSpawned = newObject;
    }