示例#1
0
    void Update()
    {
        if (botTransform.position.x > posX)
        {
            bool generated = true;

            // update tile index
            tileIndex++;
            if (tileIndex == totalTiles)
            {
                tileIndex = 0;
            }

            // generate Bot move
            int move = botMove.generateChoice();
            // get previously generated tile index height
            int index = tileIndex - 1;
            if (index == -1)
            {
                index = totalTiles - 1;
            }

            switch (move)
            {
            case 2:
                posY += Random.Range(0.3F, 1F);
                pos   = new Vector3(posX, posY, 0);
                break;

            case 3:
                posY -= Random.Range(0.3F, 2F);
                pos   = new Vector3(posX, posY, 0);
                break;

            case 1:
                pos = new Vector3(posX, posY, 0);
                if (bot_previous_action == move)
                {
                    if (Random.value > tileSpawnProb && currentVoid < maxVoid)
                    {
                        currentVoid++;
                        generated = false;
                        tileIndex = index;
                    }
                    else
                    {
                        currentVoid = 0;
                    }
                }
                break;

            default:
                break;
            }

            bot_previous_action = move;

            if (generated)
            {
                // relocate tile
                pool.SpawnObject(tile, pos);

                foreach (ObjectGeneration generator in generators)
                {
                    generator.Generate(pos);
                }

                currentGen++;
                if (currentGen == weatherGenRate)
                {
                    colGenerator.GenerateWeatherCube(pos);
                    currentGen = 0;
                }
                else
                {
                    colGenerator.Generate(pos);
                }
            }

            // increase x position
            posX += 1F;
        }
    }