Как сделать полу рандомную анимацию?

114
30 июня 2021, 23:50

Как сделать так, чтоб сначала проигрывалась анимация по одному, а иногда немного по другому.

Пример: Есть 2 лампочки, 1-вая мигает постоянно, 2-ая мигает по случайному, может мигнуть, может нет. Главное, чтобы это не была просто "гиф" где она просто иногда мигает через одинаковый промежуток времени.

Answer 1

Анимация - это, обычно, конечный автомат или машина состояний (англ. state machine), в Unity для контроллера анимации она как раз и используется. В вопросе был приведен пример со свечением лампочки, однако свечение лампочки - не есть анимация в общем случае, она либо горит, либо не горит.

Воспользовавшись обычным Random.Range и корутиной с WaitForSeconds:

public class StateMachine : MonoBehaviour {
    enum State {
        Off,
        On
    }
    State state = State.Off;
    [SerializeField]
    Vector2 stateChangeTimerBorders;
    Material material;
    private void Start() {
        material = GetComponent<MeshRenderer>().material;
        StartCoroutine(StateRoutine());
    }
    IEnumerator StateRoutine() {
        while (true) {
            yield return new WaitForSeconds(UnityEngine.Random.Range(stateChangeTimerBorders.x, stateChangeTimerBorders.y));
            // Меняем состояние
            state++;
            if(state > State.On) {
                state = State.Off;
            }
            // Меняем свойства объекта в зависимости от стейта
            switch (state) {
                case State.Off:
                    material.SetColor("_Color", Color.white);
                    break;
                case State.On:
                    material.SetColor("_Color", Color.yellow);
                    break;
                default:
                    throw new ArgumentException(String.Format("Unknown state {0}", state));
            }
        }
    }
}

Можно получить такой результат:

READ ALSO
Смещение элемента массива плавно вниз Консоль [дубликат]

Смещение элемента массива плавно вниз Консоль [дубликат]

Подскажите как сделать, что бы масив начиная с последнего элемента, плавно опускался вниз и исчезал? Принцип тетриса, но реализовать не получаеться

70
Получение каждой цифры отдельно из строки

Получение каждой цифры отдельно из строки

как можно брать цифры в строке полученную из базы "1,5,7" засунуть их в переменные или как то еще лучше чтоб типа в цикле поставить на каждую...

94
Избежать дублирования запроса SQL

Избежать дублирования запроса SQL

Доброго времени сутокНе знаю, стоило ли сюда писать весь код, но я думаю, так будет нагляднее(а может и нет) Есть такой код, он выполняет нужную...

83
Создание сайта с разграничением прав доступа [закрыт]

Создание сайта с разграничением прав доступа [закрыт]

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах

93