Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
GetGameTime - в OnGameFrame в глобальную переменную записывать значение, затем разность между текущим значением и значением, записанную в глобальную переменную будет как раз разницой в миллисекундах между двумя фреймами.
GetGameTime - в OnGameFrame в глобальную переменную записывать значение, затем разность между текущим значением и значением, записанную в глобальную переменную будет как раз разницой в миллисекундах между двумя фреймами.
public void OnGameFrame()
{
if(!GetClientCount()) return;
static float time, now;
now = GetGameTime();
PrintToServer("%f", FloatSub(now, time));
time = now;
}
public void OnGameFrame() { if(!GetClientCount()) return; static float time, now; now = GetGameTime(); PrintToServer("%f", FloatSub(now, time)); time = now; }
Нет конечно.
Я пытался получить разницу между фреймами в OnPlayerRunCmd(перехватывал команды с клавиш).
Брал разницу, между запущенным постоянно получением общего времени в OnGameFrame() и, соответственно, при нажатии клавиши в OnPlayerRunCmd.
Пытался понять принцип - не понял, и не понравилось постоянно переполняющееся глобальное значение, это нужно было бы его где-то обнулять. От такой затеи отказался, потому что она толком не работала.
Очень интересная у тебя реализация.
Ты получаешь разницу между фреймами, но тогда самое первое значение должно будет равняться нулю, зато переполнения не будет, хотя нет, вру, time будет переполняться, но это не есть проблема.
Не, я слаб в теории что бы сообразить, сейчас попробую на практике.
Ок! Работает отлично!
Спасибо за интересное решение!
========================================================================================
В продолжение темы - может быть кто возился с такой проблемой как сглаживание поворотов ENT при управлении с клавиатуры.
На видео сделал сравнение поворотов с клавиатуры игрока и своей ENT, это команды IN_RIGHT и IN_LEFT.
Видно что у игрока вращение происходит сглажено(не плавно! а именно сглажено), на дроне я уже замучался, перепробовал все свои варианты, этот вариант более менее, но всё-равно видно жесткость при вращении. Это я попробовал применить как-бы сглаживание, которое применяю на пушках при их поворотах, плавный разгон и плавная остановка. Получше, но все равно не то, жесткость заметно, на пушках вид со стороны, поэтому там такое не критично вообще, а здесь камера - все косяки сразу в глаза бросаются.
Поворачиваю изменением углов. Движения прямо, назад или стрейфом это я сделал векторами, векторами там всё отлично, сглаживание работает на ура, но при повороте углов не соображу как можно сделать.
Для примера - в юнити есть лерп(и её разновидности) для такого вида сглаживаний, а здесь то такого нет!
По какому принципу, точно, этот лерп работает я тоже не знаю. Я так понял что это линейная интерполяция(как на станках с ЧПУ), но у меня и так шаг мизерный, куда еще меньше-то. Должно по идее работать но не работает.