vlad2033 Опубликовано 1 августа, 2015 Поделиться Опубликовано 1 августа, 2015 (изменено) Всем здрастите.У меня такая беде кароч решил найти значение скрости в гонках.Искал с помощью "уменьшилось увеличилось" но нужное значение скорости так и не нашёл хотя там были значения влияющие на скорость, но самого значения скорости нет.Три раза пробовал. Скажите может я что то не так делаю? Изменено 1 августа, 2015 пользователем vlad2033 Ссылка на комментарий Поделиться на другие сайты Поделиться
Coder Опубликовано 1 августа, 2015 Поделиться Опубликовано 1 августа, 2015 В 01.08.2015 в 17:17, vlad2033 сказал: Всем здрастите.У меня такая беде кароч решил найти значение скрости в гонках.Искал с помощью "уменьшилось увеличилось" но нужное значение скорости так и не нашёл хотя там были значения влияющие на скорость, но самого значения скорости нет.Три раза пробовал. Скажите может я что то не так делаю?По-поводу скорости - https://ru.wikipedia.org/wiki/%D0%A1%D0%BA%D0%BE%D1%80%D0%BE%D1%81%D1%82%D1%8C----Тебе нужно искать коэффициент ускорения. Значения содержащие смещение относительно твоего текущего местоположения (X, Y, Z) (в состоянии покоя это 0) и через них выходить на коэффициент ускорения и прочие параметры. Ссылка на комментарий Поделиться на другие сайты Поделиться
vlad2033 Опубликовано 1 августа, 2015 Автор Поделиться Опубликовано 1 августа, 2015 В 01.08.2015 в 18:12, Coder сказал: По-поводу скорости - https://ru.wikipedia.org/wiki/%D0%A1%D0%BA%D0%BE%D1%80%D0%BE%D1%81%D1%82%D1%8C----Тебе нужно искать коэффициент ускорения. Значения содержащие смещение относительно твоего текущего местоположения (X, Y, Z) (в состоянии покоя это 0) и через них выходить на коэффициент ускорения и прочие параметры.Скажи плиз последовательность действий координаты нашёл а дальше что? Ссылка на комментарий Поделиться на другие сайты Поделиться
keng Опубликовано 2 августа, 2015 Поделиться Опубликовано 2 августа, 2015 Дальше нужно поставить брейкпоинт на запись и читать код, который меняет координаты. Скорость меняется ускорением, за определенные кусочки времени, то есть сначала игре нужно все это дело посчитать, а потом записать новую координату вместо старой: Картинку видишь? Вот там, где стрелочка, отладчик игру и останавливает. Там, по сути, происходит запись новых координат, которые рассчитала игра, поверх старых. Тебе надо выяснить, какой код отрабатывает до этого и поменять там коэффициент (speed или elapsed в данном случае). Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 2 августа, 2015 Поделиться Опубликовано 2 августа, 2015 Надо искать функцию, которая читает и пишет физическое ускорение физическому телу. Актуально для физических движков типа PhysX В Unity3d это свойство velocity rigibody.velocity Надо найти у машины "rigibody.velocity " или подобное ему и за физический кадр умножать его физический вектор скорости многократно на желаемую величину по дельте времени между физическими кадрами. Vector3 myAccel = new Vector3(2f,0f,2f); // двукратное увеличение физической скорости для X,Z, но не для Y. Где Y это высота. В других движках может быть вместо Y ось Zvoid FixedUpdate(){ carRigibody.velocity *= myAccel * Time.FixedDeltaTime;}carRigibody.velocity - скорость физического тела машиныmyAccel - это Vector3 ускорениеTime.FixedDeltaTime - постоянная дельта в физическом кадре Ссылка на комментарий Поделиться на другие сайты Поделиться
vlad2033 Опубликовано 2 августа, 2015 Автор Поделиться Опубликовано 2 августа, 2015 В 02.08.2015 в 07:04, MasterGH сказал: Надо искать функцию, которая читает и пишет физическое ускорение физическому телу. Актуально для физических движков типа PhysX В Unity3d это свойство velocity rigibody.velocity Надо найти у машины "rigibody.velocity " или подобное ему и за физический кадр умножать его физический вектор скорости многократно на желаемую величину по дельте времени между физическими кадрами. Vector3 myAccel = new Vector3(2f,0f,2f); // двукратное увеличение физической скорости для X,Z, но не для Y. Где Y это высота. В других движках может быть вместо Y ось Zvoid FixedUpdate(){ carRigibody.velocity *= myAccel * Time.FixedDeltaTime;}carRigibody.velocity - скорость физического тела машиныmyAccel - это Vector3 ускорениеTime.FixedDeltaTime - постоянная дельта в физическом кадрео спасиб я просто удвоил функцию ускорения=) Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 4 августа, 2015 Поделиться Опубликовано 4 августа, 2015 Для интересующихся. Любая машина в большинстве гонок это физическое тело. Скорость физического тела рассчитывается по трем локальным осям X,Y,Z физического тела. Ниже скрипт из стандартной машинки из стандартного набора игрового движка Unity3D (включает движок PhysX) Показать контент Vector3.magnitudeVector3.NormalizeVector3.normalizedRigidbody ManualRigidbodyНу еще и Wheel Collider (вращающаяся коллизия колеса, позволит сделать передний и задний привод, готовые скрипты в стандартной машине)Wheel Collider // Ограничение по скорости с рассчетом скоростиprivate void CapSpeed(){ float speed = m_Rigidbody.velocity.magnitude; // текущая скорость switch (m_SpeedType) { case SpeedType.MPH: // мили в час speed *= 2.23693629f; if (speed > m_Topspeed) // если текущая скорость больше максимальной m_Rigidbody.velocity = (m_Topspeed/2.23693629f) * m_Rigidbody.velocity.normalized; // ограничиваем текущую скорость case SpeedType.KPH: // километры в час speed *= 3.6f; if (speed > m_Topspeed) // если текущая скорость больше максимальной m_Rigidbody.velocity = (m_Topspeed/3.6f) * m_Rigidbody.velocity.normalized;// ограничиваем текущую скорость break; }} Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения