Как сделать цикл While по тикам

187
12 января 2022, 02:20

метод Update в c# выполняет определённый ряд действий каждый кадр. Предроложим, что я хочу сделать медленное увеличение предмета. Изначальный его размер - 20 по x и 20 по y, я же хочу, чтобы эти переменные плавно перешли из двадцати к тридцати. В таком случае я пишу, что float scale = 20 (Там, где объявляются переменные), а scale++; кидаю в while. Но в вайле всё обрабатывается мгновенно, и как только скрипт запускается, scale для предмета уже равен 30. Как мне сделать плавное увеличение и так, чтобы while выполнялся не со скоростью вычисления компьютера, а по тикам, как в update?

Answer 1

While тут вообще не причём. Это можно сделать через корутину с IEnumerator функцией, которую ты видимо увидел, но это не история про анимацию с течении времени. То, что ты увидел это просто пример, корутина для другого.

Изучи каждую строчку, разберись и запомни, как отче наш! Спрашивай если не понятно. Действия в течении времени это очень частая хрень.

void Start () {
    gameObject.AddComponent<ScaleAction>().Setup(20f, 30f, 3f);
}
...
public class ScaleAction : MonoBehaviour {
    float ScaleTimer;
    float ScaleTime;
    float ScaleFrom;
    float ScaleTo;
    public void Setup (float from, float to, float time) {
        ScaleTimer = 0;
        ScaleTime = time;
        ScaleFrom = from;
        ScaleTo = to;
        SetScale(ScaleFrom);
    }
    void Update () {
        ScaleTimer += Time.deltaTime;
        float Way = ScaleTimer/ScaleTime; // Way 0 -> 1
        if (Way < 1) {
            SetScale(ScaleFrom+(ScaleTo-ScaleFrom)*Way);
        } else {
            SetScale(ScaleTo);
            Destroy(this); // Destroy ScaleAction 
        }
    }
    void SetScale (float scaleValue) {
        gameObject.transform.localScale = new Vector3(scaleValue, scaleValue, scaleValue);
    }
}
READ ALSO
тип данных Char sql

тип данных Char sql

Всем привет, вопрос такого рода, в документации написано, что при записи в поле с типом данных CHAR(длинна), поле дополняется после текста пробелами,...

105
Таблица результатов Winforms

Таблица результатов Winforms

Подскажите пожалуйста, как в конструкторе Visual Studio можно сделать такую таблицу и добавлять в неё результаты работы программы?

96
RemoteEndPoint возвращает неверный порт

RemoteEndPoint возвращает неверный порт

Я создаю подобие серверного приложения с помощью TCPListenerКогда клиент подключается к серверу с помощью TCPClient, сервер должен определить адрес...

152
Вывод переменных из массива

Вывод переменных из массива

Требуется найти сумму и произведение элементов массива(условия в коде) и вывести переменные произведения и суммы

124