예제 #1
0
    private IEnumerator GenerateLevelEnvironment(GameStageModel stageModel)
    {
        LoadPatches(m_EnvironmentType);
        float levelLength = stageModel.m_LevelLength;

        SetFinishUpLine(levelLength);
        levelLength -= CreateFirstPatch();
        while (levelLength > 0)
        {
            levelLength -= CreatePatch(Random.Range(0, m_Patches.Length));
        }
        yield return(null);

        //Add Extra Patch at End
        CreatePatch(0);
    }
    private IEnumerator SpawnProps(GameStageModel stage)
    {
        float levelLength    = stage.m_LevelLength;
        float traverseLength = 60f;

        while (traverseLength < levelLength)
        {
            if (Random.Range(0f, 100f) <= m_PropSpawnPercentage)
            {
                if (Random.Range(0f, 100f) <= m_NPCSpawnPercentage)
                {
                    SpawnProp(m_NPCPrefabs[Random.Range(0, m_NPCPrefabs.Length)], traverseLength);
                }
                else
                {
                    SpawnProp(m_TrapsPrefabs[Random.Range(0, m_TrapsPrefabs.Length)], traverseLength);
                }
            }
            traverseLength += GameConstants.k_CellOffset;
            yield return(null);
        }
    }
예제 #3
0
    public void StartLevelGeneration()
    {
        GameStageModel CurrentStageModel = GameManager.Instance.Levels.CurrentStageModel;

        StartCoroutine(GenerateLevelEnvironment(CurrentStageModel));
    }