Четверг, 28 Марта 2024, 21:59

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Управление автомобилем на Joint-ах (в Unity3d)
Управление автомобилем на Joint-ах
GaZZoNEptaДата: Четверг, 14 Июня 2018, 10:41 | Сообщение # 1
был не раз
Сейчас нет на сайте
Люди, всем привет. что мы имеем:
колеса(4) прикреплены к осям Hinge Joint-ми;
оси прикреплены к кузову Spring Joint-ми(по 2 штуки на каждом);
между осями подобие кардана, в основном для жесткости конструкции. Прикреплен 2-мя Hinge Joint-ми к осям;
Ездить ее уже научил, работа подвески устраивает, но допилить есть куда.
Собственно проблема: не могу сделать корректный поворот передних колес.Когда едет еще более или менее, но когда стоит на одном месте, при повороте колес машинку начинает тянуть в какую-либо сторону, хотя силы к ней ни какие не прикладывал. Пока едешь все норм. В чем проблема понять не могу.
Что бы повернуть колеса на Joint-ах нужно: сначала разрешить поворот по У, затем повернуть и снова заблокировать его.
Код я написал сам, хоть и слаб в C#, потому и прошу помощи. Комментариев там наделал, думаю будет понятно.
Тут кусок кода на поворот колес:
Код
{
            for (i = 0; i < 2; ++i)
            {
                WheelsHJ[i].axis = new Vector3(1, 1, 0); //разрешаем поворот по Y у HingJoint
                FrontWheels[i].localRotation = Quaternion.Euler(Vector3.up * angleRot * Input.GetAxis("Horizontal")); //поворачиваем до нужного градуса
                WheelsHJ[i].axis = new Vector3(1, 0, 0); //поле поворота запрещаем поворот по Y у HingJoint
                a = 1;
            }
drcrackДата: Четверг, 14 Июня 2018, 14:10 | Сообщение # 2
старожил
Сейчас нет на сайте
в PhysX есть встроенный WheelCollider, че за дичь ты придумал? :D
GaZZoNEptaДата: Пятница, 15 Июня 2018, 11:02 | Сообщение # 3
был не раз
Сейчас нет на сайте
Цитата drcrack ()
drcrack

видишь в чем суть.. для игры в стиле оффроад он не подходит, ибо пол меша заезжает в объекты, а моим методом получается реализовать реальную работу подвески, если интерсно могу видео отправить, в чем суть сама)
vampir0305Дата: Пятница, 15 Июня 2018, 14:37 | Сообщение # 4
Unity C# Programmer
Сейчас нет на сайте
И даже такую проблему смог решить?

Добавлено (15 Июня 2018, 14:37)
---------------------------------------------
И кстати да, отправь видео. Интересно посмотреть)


Красочная сюжетно-ориентированная игра-головоломка
GaZZoNEptaДата: Понедельник, 18 Июня 2018, 10:54 | Сообщение # 5
был не раз
Сейчас нет на сайте
Цитата vampir0305 ()
vampir0305

на колеса пока не смотрите, это все лечится и то, что при поворот "оторваны колеса", это все лечится, сама суть в движении)

bag


Сообщение отредактировал GaZZoNEpta - Понедельник, 18 Июня 2018, 18:14
orkonsДата: Вторник, 19 Июня 2018, 03:51 | Сообщение # 6
частый гость
Сейчас нет на сайте
"Собственно проблема: не могу сделать корректный поворот передних колес.Когда едет еще более или менее, но когда стоит на одном месте, при повороте колес машинку начинает тянуть в какую-либо сторону, хотя силы к ней ни какие не прикладывал"
Хотелось бы это увидеть на видео. Или я недоглядел?
GaZZoNEptaДата: Вторник, 19 Июня 2018, 05:31 | Сообщение # 7
был не раз
Сейчас нет на сайте
Цитата orkons ()
Или я недоглядел?

нет, это я не показал основную проблему.

Вот код, отвечающий за это(без поворота ригидбади - проблема не уходит):
Код

if (Input.GetButton("Horizontal"))
        {
            for (i = 0; i < 2; ++i)
            {
                WheelsHJ[i].axis = new Vector3(1, 1, 0); //разрешаем поворот по Y у HingJoint
                FrontWheels[i].localEulerAngles = Vector3.up * angleRot * Input.GetAxis("Horizontal"); //поворачиваем до нужного градуса
                Wheelsrb[i].transform.localEulerAngles = Vector3.up * angleRot * Input.GetAxis("Horizontal"); //поворачиваем до нужного градуса RigidBody
                WheelsHJ[i].axis = new Vector3(1, 0, 0); //поле поворота запрещаем поворот по Y у HingJoint
                a = 1;
            }
        }


Сообщение отредактировал GaZZoNEpta - Вторник, 19 Июня 2018, 05:35
drcrackДата: Вторник, 19 Июня 2018, 06:48 | Сообщение # 8
старожил
Сейчас нет на сайте
Вряд ли кто подскажет, это извращение то еще :D

Вообще я бы Bullet взял для такого, вроде в ассет сторе есть обертка для юнити
Потому что PhysX даже падение кубика под действием гравитации точно смоделировать не может :D а ты хочешь машину с реалистичной подвеской
GaZZoNEptaДата: Вторник, 19 Июня 2018, 07:42 | Сообщение # 9
был не раз
Сейчас нет на сайте
Цитата drcrack ()
Вообще я бы Bullet взял для такого

по-подробнее, пожалуйста.

Цитата drcrack ()
падение кубика

да, я это понимаю, но все же.. если долго мучиться, что-то да получится, я считаю booze
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Управление автомобилем на Joint-ах (в Unity3d)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг