Страница 1 из 1

SteamVR Phisics настольный теннис

СообщениеДобавлено: 17 май 2019, 20:08
xumuk39rus
Добрый день. При создании настольного тенниса столкнулись с проблемой физики. При использовании стандартных компонентов физики unity3d, на больших скоростях мяч проскальзывает через коллайдер не замечая коллизию сквозь ракетку на скоростях, пробовали использовать разные вариации Collision Detection(Discrete, Continuous, Continuous Dynamic. Continues Speculative), но ничего не помогло. После недели мучений решили переписать всю физику с нуля не используя базовые методы unity3d. У нас получилось реализовать столкновение и правильный вектор дальнейшего движения с помощью SphereCast и AddForce, построив весь проект на триггерах, но столкнулись с другими проблемами, это повторное отбитие ракеткой мяча после момента расчета новой траектории с другой стороны(только на больших скоростях) и при резком изменении направлении движения ракетки перед столкновением с мячом. Обе эти проблемы решаем, но они крайне "костыльно" и появляются более не желательные баги. Может быть кто-то сталкивался с подобной проблемой физики в unity3d и смог бы нас проконсультировать каким нибудь ассетом или советом, если нужно можем загрузить проект с исходниками.
Спасибо.

Re: SteamVR Phisics настольный теннис

СообщениеДобавлено: 17 май 2019, 21:00
Jarico
Нужно увеличить количество тиков физики движка и перенести все физические расчёты из Update в FixedUpdate

Player Settings -> Time -> Fixed time step

0.03 = 30 тиков в секунду (1/0.03)
0.016 = 60 тиков в секунду (1/0.016)
0.008 = 120 тиков в секунду (1/0.008)

Если увеличивать количество тиков процессор будет сильнее нагружаться, рекомендуется держать Fixed time step приближённо к количеству кадров в секунду....

Re: SteamVR Phisics настольный теннис

СообщениеДобавлено: 17 май 2019, 21:03
xumuk39rus
Jarico писал(а):Нужно увеличить количество тиков физики движка

Player Settings -> Time -> Fixed time step

0.03 = 30 тиков в секунду (1/0.03)
0.016 = 60 тиков в секунду (1/0.016)
0.008 = 120 тиков в секунду (1/0.008)

Если увеличивать количество тиков процессор будет сильнее нагружаться


спасибо за ответ. Пробовали ставить на максимум по итогу немного улучшалось но на более высоких скоростях всё равно проскальзывает(это на стандартной физике unity3d), на наших скриптах всё классно отрабатывает, но появляются баги.

Re: SteamVR Phisics настольный теннис

СообщениеДобавлено: 17 май 2019, 21:04
Jarico
xumuk39rus писал(а):
Jarico писал(а):Нужно увеличить количество тиков физики движка

Player Settings -> Time -> Fixed time step

0.03 = 30 тиков в секунду (1/0.03)
0.016 = 60 тиков в секунду (1/0.016)
0.008 = 120 тиков в секунду (1/0.008)

Если увеличивать количество тиков процессор будет сильнее нагружаться


спасибо за ответ. Пробовали ставить на максимум по итогу немного улучшалось но на более высоких скоростях всё равно проскальзывает(это на стандартной физике unity3d), на наших скриптах всё классно отрабатывает, но появляются баги.


Я отредачил сообщение... Прочтите еще раз

Re: SteamVR Phisics настольный теннис

СообщениеДобавлено: 04 авг 2019, 08:58
xumuk39rus
Jarico писал(а):
xumuk39rus писал(а):
Jarico писал(а):Нужно увеличить количество тиков физики движка

Player Settings -> Time -> Fixed time step

0.03 = 30 тиков в секунду (1/0.03)
0.016 = 60 тиков в секунду (1/0.016)
0.008 = 120 тиков в секунду (1/0.008)

Если увеличивать количество тиков процессор будет сильнее нагружаться


спасибо за ответ. Пробовали ставить на максимум по итогу немного улучшалось но на более высоких скоростях всё равно проскальзывает(это на стандартной физике unity3d), на наших скриптах всё классно отрабатывает, но появляются баги.


Я отредачил сообщение... Прочтите еще раз


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