Разработчик
Скриптер
Проверенный
Пользователь
- Сообщения
- 141
- Реакции
- 329
Всем привет,
Уже давно заметил, что при высокой задержке между think событиями установленный velocity отрабатывает неверно.
UPD: При низкой задержке так же возникают проблемы, объект ускоряется.
К премеру, при задержке 0.04 секунду (25 fps) все отработает корректно и при скорости 250 ups сущность сместиться на те самые 250 юнитов за секунду.
Заметные проблемы начинаются при задержке больше 0.05 (20 fps), в моем случае это задержка в 0.1 (10 fps).
Например, в этом случае объект пройдет 250 юнитов за секунду:
Однако, если изменить задержку на 0.1 секунду, то пройденное за секунду растояние будет около 224 юнитов:
UPD: При задержке на 0.01 секунду пройденное за секунду растояние будет около 265 юнитов:
Пробовал устанавливать FL_BASEVELOCITY флаг каждый кадр, однако сильно это не повлияло.
Перекопав исходники HLSDK и Xash3D я не смог найти никакого другого влияния времени на скорость.
Есть ли какой-то способ исправить это не поднимая частоту think вызова?
Уже давно заметил, что при высокой задержке между think событиями установленный velocity отрабатывает неверно.
UPD: При низкой задержке так же возникают проблемы, объект ускоряется.
К премеру, при задержке 0.04 секунду (25 fps) все отработает корректно и при скорости 250 ups сущность сместиться на те самые 250 юнитов за секунду.
Заметные проблемы начинаются при задержке больше 0.05 (20 fps), в моем случае это задержка в 0.1 (10 fps).
Например, в этом случае объект пройдет 250 юнитов за секунду:
C-like:
new Float:fSpeed = 250.0;
static Float:vDirection[3];
// get direction somehow
static Float:vVelocity[3];
xs_vec_mul_scalar(vDirection, fSpeed, vVelocity);
set_pev(ent, pev_velocity, vVelocity);
set_pev(ent, pev_nextthink, get_gametime() + 0.04);
C-like:
set_pev(ent, pev_nextthink, get_gametime() + 0.1);
C-like:
set_pev(ent, pev_nextthink, get_gametime() + 0.01);
Перекопав исходники HLSDK и Xash3D я не смог найти никакого другого влияния времени на скорость.
Есть ли какой-то способ исправить это не поднимая частоту think вызова?
Последнее редактирование: