Ускорение работы скрипта 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 секунд, но кажется, что это настолько быстро, насколько это возможно.