public SituationStruct Situation;    // Действующая ситуация

    // Генерация действий для ситуации
    public void SituationGeneration(int id)
    {
        Situation = Situations[id];                           // Выбор по Id из массива той ситуации, которая сейчас происходит
        Situation.TimeInterval = TimeIntervalCalculation(id); // Определенеие времнного интервала между нажатиями на экран
        // Сколько будет затрачиваться энергии на разгон
        Situation.EnergyCosts = Random.Range(Situation.EnergyCosts - 0.25f, Situation.EnergyCosts + 0.25f);

        // Определение количества действий, которые будут сделаны за отвдённое время для происходящей ситуации
        var numberOfActions = Mathf.CeilToInt(Situation.Time / Situation.TimeInterval);

        Situation.ActionDesignation = new int[numberOfActions]; // Создание массива действий, где 1 - разовое нажатие; 2 - удержание

        // Генерирование значения для каждого действия в массиве
        for (int action = 0; action < Situation.ActionDesignation.Length; action++)
        {
            /*Выбор, будет ли персонаж делать какое-либо действие
             * Иначе 0 - невыполнение каких-либо действий (По умолчанию элементы массива имют значение 0)*/
            if (Random.Range(0.0f, 1.0f) <= Situation.ChancePerformAction)
            {
                // Определённое количество процентов для каждой ситуации, что выпадет 1 - разовое нажатие на экран
                if (Random.Range(0.0f, 1.0f) <= Situation.ChanceTouch)
                {
                    Situation.ActionDesignation[action] = 1;
                }
                else // Иначе 2 - долгое нажатие на экран
                {
                    Situation.ActionDesignation[action] = 2;
                }
            }
        }
    }
예제 #2
0
    // Действия после старта, когда все начинают бежать
    public void AnimationStartAnimSpeedRun()
    {
        animator.SetFloat("speed", 1.0f);
        Speed = RangeSpeed.x;
        isRun = true;

        // Запуск ситуации из массива с индексм 0 (Разгон на старта)
        IdSituation = 0;
        accelerationCalculation.SituationGeneration(IdSituation);
        CurrentSituation = accelerationCalculation.Situation;
    }