예제 #1
0
    public PedestrianObject SpawnRandomObject(bool a_ignoreChangeOfSpawning = false)
    {
        if (m_objectPrefabs.Count <= 0)
        {
            return(null);
        }

        if (PedestrianSystem.Instance && !PedestrianSystem.Instance.CanSpawn())
        {
            return(null);
        }

        float chanceOfSpawn = Random.Range(0.0f, 1.0f);

        if (!a_ignoreChangeOfSpawning && chanceOfSpawn > m_nodeObjectSpawnChance)
        {
            return(null);
        }

        int randIndex = Random.Range(0, m_objectPrefabs.Count);

        PedestrianObject obj = Instantiate(m_objectPrefabs[randIndex], transform.position, transform.rotation) as PedestrianObject;

        obj.Spawn(transform.position, m_startNode);
        return(obj);
    }
예제 #2
0
    void Start()
    {
        if (Instance != this)
        {
            return;
        }

        if (m_randomObjectSpawnPerNode && Application.isPlaying)
        {
            PedestrianNode[] nodes = GameObject.FindObjectsOfType <PedestrianNode>();

            for (int rIndex = 0; rIndex < nodes.Length; rIndex++)
            {
                int perNodeCount = 0;
                while (perNodeCount < m_numOfObjectsSpawnedPerNode)
                {
                    float rand = Random.Range(0.0f, 1.0f);
                    if (rand <= m_randomObjectSpawnChancePerNode && CanSpawn())
                    {
                        int randObjectIndex  = Random.Range(0, m_objectPrefabs.Count);
                        PedestrianObject obj = Instantiate(m_objectPrefabs[randObjectIndex], transform.position, transform.rotation) as PedestrianObject;
                        obj.Spawn(nodes[rIndex].transform.position, nodes[rIndex]);
                    }

                    perNodeCount++;
                }
            }
        }
    }