Поворот крутящегося колеса в сторону движения

Общие вопросы о Unity3D

Поворот крутящегося колеса в сторону движения

Сообщение ShutTap 05 фев 2017, 19:27

Здравствуйте.
Начал изучать юнити, решаю такую задачу:
Есть колесо, катится с наклона. Стрелками (input.getAxis("Horizontal") можно управлять его движением, придавая силу влево и вправо.
Как сделать поворот колеса по направлению к результирующему движению? Что бы оно не падало и не ходило восьмеркой. Пробовал, но что-то все не получается, уже не знаю, что попробовать...
Извините за простой вопрос
ShutTap
UNец
 
Сообщения: 25
Зарегистрирован: 04 фев 2017, 20:42

Re: Поворот крутящегося колеса в сторону движения

Сообщение ShutTap 07 фев 2017, 00:20

пока сделал так, что у колеса заморозил повороты не по z (изначально колесо в положении, что крутится по оси z)
и пишу
Синтаксис:
Используется csharp
 wheel.transform.rotation = Quaternion.LookRotation(Vector3.Cross(player_rigid.velocity, new Vector3(0, 1, 0)));

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

То есть, как понимаю, мне нужно колесо вращать на плоскости, образованной вектором движения и осью вращения, и она будет направлена "от поверхности" примерно. то есть наша ось Y грубо говоря, вокруг которой и надо повернуть. Но так как колесо все время катится, крутятся и его оси. Как все это совместить? не понимаю...

Как в 3dmax сделать можно, чтобы фиксировать вращение по локальной оси как бы, и в не зависимости от глобального поворота крутилось только по локальной оси?

Подобные задачи вообще так решаются? или другой подход какой-то... напрямую задавать velocity и rotation, без использования физики?
ShutTap
UNец
 
Сообщения: 25
Зарегистрирован: 04 фев 2017, 20:42

Re: Поворот крутящегося колеса в сторону движения

Сообщение ShutTap 07 фев 2017, 20:07

Это настолько простой или настолько сложный вопрос? Подскажите хотя бы куда копать..
ShutTap
UNец
 
Сообщения: 25
Зарегистрирован: 04 фев 2017, 20:42

Re: Поворот крутящегося колеса в сторону движения

Сообщение xanixon 09 фев 2017, 20:28

Я не знаю деталей всей задачи. Но если колесо просто катится с горки вы можете воспользоваться свойствами Rigidbody и запретить поворот по ненужным осям. В вашем случае нужно разрешить колесу вращаться только вокруг оси, которая проходит через "дырку от бублика".

Эти настройки лежат в выпадающем списке в Rigidbody в самом низу.
xanixon
UNец
 
Сообщения: 9
Зарегистрирован: 24 окт 2015, 14:40

Re: Поворот крутящегося колеса в сторону движения

Сообщение ShutTap 09 фев 2017, 22:12

да, я так и сделал. но когда вручную придаю поворот или addTorque, то колесо начинает идти восьмеркой. так как вращение продолжается по оси "через дырку от булика" плюс поворот который я придал. и в итоге из-за этой восьмерки колесо падает под воздействием физики
Задача просто поворачивать вращающееся колесо, катящееся, чтобы оно не падало))
ShutTap
UNец
 
Сообщения: 25
Зарегистрирован: 04 фев 2017, 20:42

Re: Поворот крутящегося колеса в сторону движения

Сообщение siriusspark 16 фев 2017, 10:59

А не проще использовать WheelCollider?
Star Wars: Path of lust. 3D-адвенчур 18+ по мотивам Звездных войн | _www.patreon.com/starlordgames
Аватара пользователя
siriusspark
UNIт
 
Сообщения: 106
Зарегистрирован: 10 сен 2015, 09:14

Re: Поворот крутящегося колеса в сторону движения

Сообщение ShutTap 24 фев 2017, 20:46

whilecollider это минимум 3 колеса (или 4)
ShutTap
UNец
 
Сообщения: 25
Зарегистрирован: 04 фев 2017, 20:42

Re: Поворот крутящегося колеса в сторону движения

Сообщение samana 25 фев 2017, 23:01

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

Пусть на самом деле физическим объектом будет сфера, у которой выключен мешь, чтобы её не было видно.
А колесо будет состоять из вложенности пары объектов - пустой объект контейнер для колеса и само колесо в нём.
В апдейте постоянно ставим контейнер колеса в позицию физической сферы. Таким образом контейнер будет всегда следовать за сферой, но повороты контейнера и самого колеса в нём совершенно в свободном расположении.
Контейнер всегда пусть поворачивается осью z (lookAt) в направлении равное скорости физической сферы. Таким образом будет визуальный поворот колеса вправо и влево.
А само колесо (внутри контейнера) крутить тоже исходя из скорости сферы.

В общем идея такая, раз не получается контролировать три поворота в одном объекте, то пусть это будут три объекта и у каждого контролировать только один, нужный поворот.
Аватара пользователя
samana
Адепт
 
Сообщения: 4738
Зарегистрирован: 21 фев 2015, 13:00
Откуда: Днепропетровск


Вернуться в Общие вопросы

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

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