Проблема с работой неких "физических" штуковин

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Проблема с работой неких "физических" штуковин

Сообщение cYcle 26 авг 2023, 21:49

Всем здравствуйте. Я тут пишу подобие ИИ для поезда. Состав получает на вход следующее ограничение скорости. Если оно меньше, чем нынешнее, то поезд измеряет расстояние до него, далее по формуле из физики для нахождения ускорения [S = (V^2-V0^2)/2a] с некоторыми перестановками нахожу ускорение, с которым поезду нужно тормозить. Получается так, что всё считается верно, несколько раз пересчитал на бумаге, но вот в юнити не так. По подсчётам понадобиться 10 секунд, что бы поезд остановился, а останавливается чуть менее, чем за секунду. В чём нюанс? Надеюсь, что туда задал вопрос.

Пометки: Деление на три нужно, т.к это некий коэффициент для отображения скорости на приборной панели

Синтаксис:
Используется csharp
 if (ShooldBreak)
            {
                if (NextDopustimayaChastota == 0)
                {
                    IdealSpeed = 0;
                }
                else if (NextDopustimayaChastota == 1)
                {
                    IdealSpeed = 40 / 3;
                }
                else if (NextDopustimayaChastota == 2)
                {
                    IdealSpeed = 60 / 3;
                }
                else if (NextDopustimayaChastota == 3)
                {
                    IdealSpeed = 70 / 3;
                }

                if (NextSpeedBox != null && !FixedDistance)
                {
                    FixedDistance = true;
                    distance = Vector3.Distance(gameObject.transform.position, NextSpeedBox.transform.position);
                    BreakSpeed = (IdealSpeed * IdealSpeed - speed * speed) / (2 * distance);    
                }
                if (speed > IdealSpeed )
                {
                    speed += BreakSpeed;
                }
            }
cYcle
UNец
 
Сообщения: 5
Зарегистрирован: 01 янв 2023, 13:58

Re: Проблема с работой неких "физических" штуковин

Сообщение 1max1 26 авг 2023, 22:19

Где и когда выполняется код? Если это происходит в апдейте, то где домножение на дельта тайм?
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Проблема с работой неких "физических" штуковин

Сообщение cYcle 26 авг 2023, 22:34

Происходит в апдейте. Про дельта тайм что-то немного не подумал. Добавил, начало работать, но теперь он уезжает дальше, чем нужно. Я могу подобавлять коэффициенты попытаться. Но хотелось бы узнать, почему он теперь подальше уезжает.
cYcle
UNец
 
Сообщения: 5
Зарегистрирован: 01 янв 2023, 13:58

Re: Проблема с работой неких "физических" штуковин

Сообщение waruiyume 26 авг 2023, 23:07

Надо сделать так:
скорость += ускорение/2
позиция += скорость
скорость += ускорение/2

Не помню точно название видоса, где я это услышал, но что-то вроде "you use deltatime wrong".
upd
https://youtu.be/yGhfUcPjXuE?si=oj0jMhcNGShzYUWc
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Проблема с работой неких "физических" штуковин

Сообщение cYcle 27 авг 2023, 02:13

Большое всем спасибо за помощь!
cYcle
UNец
 
Сообщения: 5
Зарегистрирован: 01 янв 2023, 13:58


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 18