Страница 5 из 7
Re: Unity3d Tank Tutorial
Добавлено:
21 авг 2012, 17:57
Dante449
R рестарт
Re: Unity3d Tank Tutorial
Добавлено:
21 авг 2012, 21:03
seaman
В "Почемучку" с такими вопросами.
Re: Unity3d Tank Tutorial
Добавлено:
23 авг 2012, 06:05
mlkv1n
Хороший урок. Спасибо.
Не могли бы вы объяснить вот эту часть кода:
Используется csharp
w.wheelTransform.localRotation = Quaternion.Euler(w.rotation, w.col.steerAngle, 90.0f)
А именно: почему для вращения колеса вы используете локальную ось X? Ведь по логике, после поворота колеса по оси Y вращение по локальной X должно давать неправильный результат т.к. объект повёрнут (по Y) и локальные оси расположены не параллельно его собственным. Получается колесо должно вращаться как-бы "восьмёркой" поскольку руль (Y) мы повернули, а ось по которой колесо вращается (X) смотрит строго в бок от кузова. Так почему этот код работает корректно? Что я не понял?
Re: Unity3d Tank Tutorial
Добавлено:
23 авг 2012, 13:47
IDoNotExist
Хм..., смотри ка и правда, а я как то внимания не обращал
. Кватернионы такие кватернионы. Точно не знаю почему так, но работает. Но в дальнейшем я подобным методом не советовал бы пользоваться я сам им не пользуюсь, а делаю по нормальному, один ГО для поворота вокруг локальной оси Y, и дочерний к нему - для вращения колеса вокруг локальной оси Х.
Re: Unity3d Tank Tutorial
Добавлено:
23 авг 2012, 18:49
mlkv1n
Учитывая то, как этот метод работает, при всём желании бы не смог. А с отдельными объектами под каждую ось - это интересно. Не могли бы поподробней рассказать как реализовываете?
Re: Unity3d Tank Tutorial
Добавлено:
24 авг 2012, 05:13
IDoNotExist
Один ГО ставите в том месте где должен быть центр колеса, к ниму прикрепляете дочернее ГО - саму модель колеса, ставите ей локальные координаты 0,0,0. Дальше передаете модель колеса в скрипт. Саму модель вращаете её вокруг оси Х. Её парента вращаете вокруг оси Y.
Используется csharp
w.wheelTransform.localRotation = Quaternion.Euler(w.rotation, 0f, 90.0f);
w.wheelTransform.parent.localRotation = Quaternion.Euler(0f, w.col.steerAngle, 0.0f);
Re: Unity3d Tank Tutorial
Добавлено:
24 авг 2012, 17:21
mlkv1n
Знатный костыль
Спасибо.
Re: Unity3d Tank Tutorial
Добавлено:
15 окт 2012, 00:56
Syberex
Пытаюсь ограничить максимальную скорость, по условию когда скорость ригидбоди становится больше максимальной, на коллайдеры подаю тормозной момент равный крутящему моменту. В итоге макс. скорость ограничена, но не по заданному значению, она получается более высокой ... например при макс. скорости 8, в итоге получаем 12 ... Вообщем такое решение не очень удовлетворяет, а другого пока не сообразил. Может будут предложения какие?
Re: Unity3d Tank Tutorial
Добавлено:
15 окт 2012, 04:31
IDoNotExist
Вместо того чтобы подавать тормозной момент, подавайте нулевой крутящий момент.
Re: Unity3d Tank Tutorial
Добавлено:
16 окт 2012, 07:29
Syberex
Попробовал вчера, результат лучше, хоть и не идеальный
видимо надо комбинировать ...
IDoNotExist, а вот еще такой вопросик - почему в уроке для поворота танка во время движения, внешняя гусеница ускоряется, а не тормозит внутренняя? Вообще как правильно?
Re: Unity3d Tank Tutorial
Добавлено:
16 окт 2012, 09:27
IDoNotExist
Очень сильно зависит от того поворачивает он стоя или на ходу. Вообще я пробовал по всякому, тормозит внутренняя, сильно снижается скорость танка на ходу. Давал на внешнюю увеличенный положительный крутящий момент, а на внутреннюю - отрицательный, на ходу поворачивает крайне медленно, тем не менее при повороте на месте поворачивает прекрасно. В итоге сделал вообще добавлением rigidbody.AddTorque(), поворот получился намного более управляемым, но и баги вылезли естественно, например нужно знать какие колеса стоят на земле и контроллировать силу поворота в зависимости от этого. Есть у меня еще пара идей, но на практике не пробовал, например добавлять силу с помощью rigidbody.AddForceAtPosition(), точки приложения силы - позиции WheelCollider'ов.
Re: Unity3d Tank Tutorial
Добавлено:
17 окт 2012, 20:57
Syberex
IDoNotExist писал(а):Очень сильно зависит от того поворачивает он стоя или на ходу. Вообще я пробовал по всякому, тормозит внутренняя, сильно снижается скорость танка на ходу. Давал на внешнюю увеличенный положительный крутящий момент, а на внутреннюю - отрицательный, на ходу поворачивает крайне медленно, тем не менее при повороте на месте поворачивает прекрасно. В итоге сделал вообще добавлением rigidbody.AddTorque(), поворот получился намного более управляемым, но и баги вылезли естественно, например нужно знать какие колеса стоят на земле и контроллировать силу поворота в зависимости от этого. Есть у меня еще пара идей, но на практике не пробовал, например добавлять силу с помощью rigidbody.AddForceAtPosition(), точки приложения силы - позиции WheelCollider'ов.
Спасибо за разъяснения!
У меня пока тоже получается "кусок мыла на льду", 3 недели или больше впустую ...
Может вообще из этих колес делать гусеницы плохая идея?
Или может чего не так с трением?
--------
Нашел интересную статью
ОСНОВЫ ДВИЖЕНИЯ ТАНКА
Re: Unity3d Tank Tutorial
Добавлено:
03 янв 2013, 16:07
BANNERTM
странно, он у меня когда разворачивается , он не стоит на месте а его несет куда то в сторону, как на льду - в чем проблема. Да и повороты в движении какое-то странные
Re: Unity3d Tank Tutorial
Добавлено:
07 янв 2013, 15:23
IDoNotExist
Чтобы танк стоял на месте во время разворота, нужно установить центр масс точно в центре относительно всех его колес.
Re: Unity3d Tank Tutorial
Добавлено:
18 янв 2013, 21:04
stalogd
Скиньте пожалуйста исходник из 2го урока в лс