Как реализовать плавный балансер по оси Z

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

Как реализовать плавный балансер по оси Z

Сообщение Opts 26 май 2020, 04:52

Коллеги, кто сможет подсказать как реализовать такой балансер в юнити.
Скрытый текст:
Изображение

Пробовал следующие подходы:
1. HingeJoint почему-то решил что легко можно будет сделать это Hinge однако корабль вращался по разному, но не было и близко похожего на пример.
2. Решил попробовать самому ротейшен делать в обратную сторону. Т.е. смотрел как только последний контакт был пройден с поверхностью, тогда начинал его вращать в обратную сторону(уже согласен был без качелек, чтобы хоть просто вернулся назад в прежнее положение), делал это с помощью DOTween, как на обычный трансформ так и на риджидбоди. Для rigidbody поведение было вообще стрёмное и непредсказуемое, т.е. работало сильно убого, но работало, однако глюков было немеренно, как только корабль отрывался от земли его могло сильно швырнуть вверх - из-за физики. Пробовал ставить задержку, типа отлететь немного, вроде стало работать стабильней но все равно, бывали моменты когда его швыряло по всему экрану. С трансформом, он тупо проваливался в землю и потом выстреливал в разном направлении.
3. Потом нашел, что можно это сделать с помощью spring joint. Еще +1 вечер без результата, так и не смог настроить, чтобы это хоть немного напоминало на то, что на гифке. Он как-бы "плавал" но только не по оси Z. Пробовал может два joint-а добавить и зафиксировать как-то, а потом отключать их и включать, но поведение тоже было суровое и близко не было то, что в примере.

В итоге у меня закончились идеи и уже решил вообще отказаться от такой фичи. Но все равно разъедает, ну как же, блин, это реализовать.
Есть у кого какие-нибудь мысли, чего бы еще попробовать?
Opts
UNIт
 
Сообщения: 64
Зарегистрирован: 12 сен 2012, 15:22

Re: Как реализовать плавный балансер по оси Z

Сообщение 1max1 26 май 2020, 08:42

Ну и зачем тут джоинты вообще? У тебя есть 1 твердое тело и его надо держать в вертикальном положении, малейшее отклонение угла запускает силу для выравнивания https://docs.unity3d.com/ScriptReferenc ... ition.html
Аватара пользователя
1max1
Адепт
 
Сообщения: 5505
Зарегистрирован: 28 июн 2017, 10:51

Re: Как реализовать плавный балансер по оси Z

Сообщение Tolking 26 май 2020, 09:44

1) Центр тяжести опускаешь ниже пола
2) профит...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Как реализовать плавный балансер по оси Z

Сообщение Opts 27 май 2020, 01:56

>1) Центр тяжести опускаешь ниже пола
и как это сделать?
Opts
UNIт
 
Сообщения: 64
Зарегистрирован: 12 сен 2012, 15:22

Re: Как реализовать плавный балансер по оси Z

Сообщение Tolking 27 май 2020, 09:36

Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Как реализовать плавный балансер по оси Z

Сообщение Opts 28 май 2020, 02:56

Не работает. Красная точка - куда сместил центр тяжести.
Скрытый текст:
Изображение

Еще странный момент, почему-то центр тяжести начинает работать тогда, когда включаю движек корабля. В остальном случаи как видно из примера, корабль не возвращается в прежнее положение.
p.s. поигравшись немного с гравитацией и весом корабля, что-то близкое удалось достичь, однако далеко было до идеала, он выравнивался только когда работало два движка - логично ведь центр тяжести по центру их, если хоть один работает он начинал дико вращаться, а должен продолжать выравниваться и лететь в обратную сторону работающего движка.
Последний раз редактировалось Opts 28 май 2020, 03:02, всего редактировалось 2 раз(а).
Opts
UNIт
 
Сообщения: 64
Зарегистрирован: 12 сен 2012, 15:22

Re: Как реализовать плавный балансер по оси Z

Сообщение Opts 28 май 2020, 02:58

1max1 писал(а):Ну и зачем тут джоинты вообще? У тебя есть 1 твердое тело и его надо держать в вертикальном положении, малейшее отклонение угла запускает силу для выравнивания https://docs.unity3d.com/ScriptReferenc ... ition.html

Как вы представляете реализацию с этой функциней. Я больше склоняюсь к addTorque, но причём тут AddForceAtPosition.
Opts
UNIт
 
Сообщения: 64
Зарегистрирован: 12 сен 2012, 15:22

Re: Как реализовать плавный балансер по оси Z

Сообщение Opts 03 июн 2020, 05:05

Реализовал авто балансер с помощью addTorque. Пришлось выдумывать свой велосипед, а хотел найти какое-то готовое решение в юнити(например, теже джойны). Ну да ладно, если кому интересно можете посмотреть видео в инстаграмме, как получилось.
Opts
UNIт
 
Сообщения: 64
Зарегистрирован: 12 сен 2012, 15:22


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

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

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