Перейти к содержимому


Фотография

Расчет дистанции которую проехало авто.


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 OFFLINE   nIkRon

nIkRon

    Сержант

  • Пользователи
  • 195 сообщений
  • Откуда:Донецк

Отправлено 08 October 2018 - 17:56

Здравствуйте, интересует вопрос, каким образом можно высчитать дистанцию, которую проехал транспорт ?
Рылся в евентхендлерах, но ничего не нашел подходящего, может конечно плохо смотрел.
Пока единственное что пришло в голову, это собирать позиции, и через distance все это дело вычислять.
Типо этого:

last_pos = (position car);
total_dist = 0;
while {true} do {
	_dist = (position car) distance last_pos;
	last_pos = (position car);
	total_dist = total_dist + _dist;
	hintSilent format ["Проехали: %1км",total_dist/1000];
	uisleep 0.5;
};

 


  • 0

#2 OFFLINE   Solib

Solib

    Мл.сержант

  • Пользователи
  • 106 сообщений
  • Откуда:Санкт-Петербург

Отправлено 18 October 2018 - 05:02

while выполнится максимум 10000 раз так что это изначально плохая идея


  • 0

#3 OFFLINE   moroz89

moroz89

    Мл.сержант

  • Пользователи
  • 116 сообщений

Отправлено 18 October 2018 - 07:21

Как вариант использовать EventHandler “Engin”
  • 0

#4 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 18 October 2018 - 08:56

Solib, нет, не 10000 циклов, а столкьо сколько нужно будет. Он использует uiSleep, а значит задержка разрешена >> запланированное пространство
  • 0

#5 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 18 October 2018 - 09:01

nIkRon, никаких обработчиков событий нету и быть не может. Хз чем вам не нравится вариант с использованием цикла и постоянног оподсчета дистанции... от себя добавлю: симуляция физики происходит один раз каждый кадр, поэтому для максимальной точности вы можете использовать обработчики событий EachFrame с текущим кодом подсчета
  • 0

#6 OFFLINE   nIkRon

nIkRon

    Сержант

  • Пользователи
  • 195 сообщений
  • Откуда:Донецк

Отправлено 18 October 2018 - 19:50

nIkRon, никаких обработчиков событий нету и быть не может. Хз чем вам не нравится вариант с использованием цикла и постоянног оподсчета дистанции... от себя добавлю: симуляция физики происходит один раз каждый кадр, поэтому для максимальной точности вы можете использовать обработчики событий EachFrame с текущим кодом подсчета

Ну я не говорил что он мне не нравиться. Просто я не знаю все 2000+ команд армы наизусть, и все остальные примочки типо хендлеров и т.д. И как вариант допускаю что может быть и другой способ, который сделала сама бАгемия, и я о нем просто не знаю, поэтому и спросил. 


Как вариант использовать EventHandler “Engin”

Ну это только добавит "оптимизации", но не даст возможность получить пробег по другому.


  • 0

#7 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 18 October 2018 - 20:47

 EventHandler “Engin”

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

Что бы сохранить текущий пробег достаточно сохранять его в самом объекте тачка, то есть, при запуске двигателя стартует ваш алгоритм который отсчитывает пробег, и сохраняет текущее состояние в некую переменную которая будет храниться в самой тачке, после остановки двигателя вы убиваете поток который рассчитывает пробег, а сохранённые данные остаются в самой тачке.


  • 0

#8 OFFLINE   vlad333000

vlad333000

    Полковник

  • Пользователи
  • 3224 сообщений
  • Откуда:Кострома

Отправлено 18 October 2018 - 21:00

SteelRat, езду без работающего двигателя считать не будем? :)
  • 0

#9 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 19 October 2018 - 01:26

Не забываем про технику безопасности, и не забываем ставить на ручник).

А если серьёзно, на сколько мне известно, в арме, по ванили, и не только в ванили, вся ползающая по земной тверди техника сконфигурирована на уровне коробки передач, как полуавтомат, то есть не жмёшь не едешь. И в конце концов, всегда можно добавить в хандлер вызов потока который будет крутиться до тех пор пока техника движется после выключения двигателя, по инерции, а после останова убьёт то что нужно убить.

Блин, реал виртуалити и инерция объекта, фантазёр я однако, совместил не совместимое).


  • 0

#10 OFFLINE   SteelRat

SteelRat

    Полковник

  • Пользователи
  • 3241 сообщений
  • Откуда:РФ

Отправлено 19 October 2018 - 01:38

А вот где в наличии и физика и инерция. В данном случае не без фелов, по сути я и снял этот ролик что бы показать разработчикам на сколько убого выглядит визуально когда расчёт столкновений колеса с поверхностями рассчитывается одним лучём.


  • 0

#11 OFFLINE   wehysan

wehysan

    Рядовой

  • Пользователи
  • 14 сообщений
  • Откуда:Мордер

Отправлено 28 October 2018 - 10:19

Я попроще использовал метод. Правда у меня не было требований к высокой точности пройденного пути.
Использовал команду speed 

Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание

 
_rast = 0;                                   //переменная фиксирующая пройденный путь//
while {true} do {
_spdkm = speed name_truk; //скорость автомобиля //
_putdor = _spdkm/3.6;             //пройденный путь авто в метрах, за цикл равной 1 сек//
_rast = _rast + _putdor;          //суммарный пройденный путь авто//
sleep 1;
};
 
Абсолютную точность пути трудно назвать, но сравнивая разные типы техники, проехавшие одинаковый участок дороги, разброс пройденного пути высчитанного по данной формуле, между ними был +- 15м. на 1 км.

  • 0




Яндекс.Метрика