Ускорение работы скрипта Unity3d или проблемы с ускорением интеграции

Я пытаюсь реализовать "мертвый расчет" с использованием IMU в моем проекте Unity. В настоящее время я не могу получить хорошие результаты: скорость становится отрицательной, поэтому персонаж движется назад, или персонаж иногда движется вперед и назад после перемещения ИДУ только вперед. Я подозреваю, что частота вызова сценария не так высока, как частота отправки данных IMU, или мой сценарий неверен. Есть ли способ заставить метод / скрипт вызываться чаще? Или я что-то не так делаю в коде:

    /// <summary>
    /// This is the coroutine called in the start Method. It keeps running in the background and keeps track of the user making steps.
    /// </summary>
    /// <returns>WaitForSeconds</returns>
    IEnumerator StepcounterLeft()
    {
        float prev_zVel = 0;
        float prev_zAcc = 0;

        for (var a = 0; a < 1;)
        {
            yield return new WaitForSeconds(0.0001f);

            float zAcc = (float)vn100l.CurrentMeasurements.LinearAccelerationBody.Z;
            float zVel = prev_zVel + (prev_zAcc + ((zAcc - prev_zAcc)/2.0f)*Time.deltaTime);
            if (zVel > -0.1 && zVel < 0.1)
                zVel = 0;
            speed = zVel / 10;
            prev_zVel = zVel;
            prev_zAcc = zAcc;
            if ((zAcc > -0.1 && zAcc < 0.1) && (prev_zAcc > -0.1 && prev_zAcc < 0.1))
                prev_zVel = 0;
        }
    }

1 ответ

Создание новой нити через System.Threading обеспечило скорость 0,001 секунды. Чтобы прочитать все значения из акселерометра, мне понадобится скорость 0,000008 секунд, но кажется, что это настолько быстро, насколько это возможно.

Другие вопросы по тегам