Unity3d Tank Tutorial

Научился сам? Помоги начинающему.

Re: Unity3d Tank Tutorial

Сообщение Dante449 21 авг 2012, 17:57

R рестарт
Последний раз редактировалось Dante449 22 авг 2012, 20:00, всего редактировалось 1 раз.
Dante449
UNец
 
Сообщения: 15
Зарегистрирован: 07 авг 2012, 12:12

Re: Unity3d Tank Tutorial

Сообщение seaman 21 авг 2012, 21:03

В "Почемучку" с такими вопросами.
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Unity3d Tank Tutorial

Сообщение mlkv1n 23 авг 2012, 06:05

Хороший урок. Спасибо.(3A4OT)
Не могли бы вы объяснить вот эту часть кода:
Синтаксис:
Используется csharp
w.wheelTransform.localRotation = Quaternion.Euler(w.rotation, w.col.steerAngle, 90.0f)
 

А именно: почему для вращения колеса вы используете локальную ось X? Ведь по логике, после поворота колеса по оси Y вращение по локальной X должно давать неправильный результат т.к. объект повёрнут (по Y) и локальные оси расположены не параллельно его собственным. Получается колесо должно вращаться как-бы "восьмёркой" поскольку руль (Y) мы повернули, а ось по которой колесо вращается (X) смотрит строго в бок от кузова. Так почему этот код работает корректно? Что я не понял?
Аватара пользователя
mlkv1n
UNец
 
Сообщения: 10
Зарегистрирован: 03 апр 2010, 08:16

Re: Unity3d Tank Tutorial

Сообщение IDoNotExist 23 авг 2012, 13:47

Хм..., смотри ка и правда, а я как то внимания не обращал :-? . Кватернионы такие кватернионы. Точно не знаю почему так, но работает. Но в дальнейшем я подобным методом не советовал бы пользоваться я сам им не пользуюсь, а делаю по нормальному, один ГО для поворота вокруг локальной оси Y, и дочерний к нему - для вращения колеса вокруг локальной оси Х.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Unity3d Tank Tutorial

Сообщение mlkv1n 23 авг 2012, 18:49

Учитывая то, как этот метод работает, при всём желании бы не смог. А с отдельными объектами под каждую ось - это интересно. Не могли бы поподробней рассказать как реализовываете?
Аватара пользователя
mlkv1n
UNец
 
Сообщения: 10
Зарегистрирован: 03 апр 2010, 08:16

Re: Unity3d Tank Tutorial

Сообщение IDoNotExist 24 авг 2012, 05:13

Один ГО ставите в том месте где должен быть центр колеса, к ниму прикрепляете дочернее ГО - саму модель колеса, ставите ей локальные координаты 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);
 
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Unity3d Tank Tutorial

Сообщение mlkv1n 24 авг 2012, 17:21

Знатный костыль ;) Спасибо.
Аватара пользователя
mlkv1n
UNец
 
Сообщения: 10
Зарегистрирован: 03 апр 2010, 08:16

Re: Unity3d Tank Tutorial

Сообщение Syberex 15 окт 2012, 00:56

Пытаюсь ограничить максимальную скорость, по условию когда скорость ригидбоди становится больше максимальной, на коллайдеры подаю тормозной момент равный крутящему моменту. В итоге макс. скорость ограничена, но не по заданному значению, она получается более высокой ... например при макс. скорости 8, в итоге получаем 12 ... Вообщем такое решение не очень удовлетворяет, а другого пока не сообразил. Может будут предложения какие? :-?
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: Unity3d Tank Tutorial

Сообщение IDoNotExist 15 окт 2012, 04:31

Вместо того чтобы подавать тормозной момент, подавайте нулевой крутящий момент.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Unity3d Tank Tutorial

Сообщение Syberex 16 окт 2012, 07:29

Попробовал вчера, результат лучше, хоть и не идеальный :) видимо надо комбинировать ...

IDoNotExist, а вот еще такой вопросик - почему в уроке для поворота танка во время движения, внешняя гусеница ускоряется, а не тормозит внутренняя? Вообще как правильно?
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: Unity3d Tank Tutorial

Сообщение IDoNotExist 16 окт 2012, 09:27

Очень сильно зависит от того поворачивает он стоя или на ходу. Вообще я пробовал по всякому, тормозит внутренняя, сильно снижается скорость танка на ходу. Давал на внешнюю увеличенный положительный крутящий момент, а на внутреннюю - отрицательный, на ходу поворачивает крайне медленно, тем не менее при повороте на месте поворачивает прекрасно. В итоге сделал вообще добавлением rigidbody.AddTorque(), поворот получился намного более управляемым, но и баги вылезли естественно, например нужно знать какие колеса стоят на земле и контроллировать силу поворота в зависимости от этого. Есть у меня еще пара идей, но на практике не пробовал, например добавлять силу с помощью rigidbody.AddForceAtPosition(), точки приложения силы - позиции WheelCollider'ов.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Unity3d Tank Tutorial

Сообщение Syberex 17 окт 2012, 20:57

IDoNotExist писал(а):Очень сильно зависит от того поворачивает он стоя или на ходу. Вообще я пробовал по всякому, тормозит внутренняя, сильно снижается скорость танка на ходу. Давал на внешнюю увеличенный положительный крутящий момент, а на внутреннюю - отрицательный, на ходу поворачивает крайне медленно, тем не менее при повороте на месте поворачивает прекрасно. В итоге сделал вообще добавлением rigidbody.AddTorque(), поворот получился намного более управляемым, но и баги вылезли естественно, например нужно знать какие колеса стоят на земле и контроллировать силу поворота в зависимости от этого. Есть у меня еще пара идей, но на практике не пробовал, например добавлять силу с помощью rigidbody.AddForceAtPosition(), точки приложения силы - позиции WheelCollider'ов.

Спасибо за разъяснения! :)
У меня пока тоже получается "кусок мыла на льду", 3 недели или больше впустую ...
Может вообще из этих колес делать гусеницы плохая идея?

Или может чего не так с трением?
--------
Нашел интересную статью ОСНОВЫ ДВИЖЕНИЯ ТАНКА
Аватара пользователя
Syberex
Адепт
 
Сообщения: 2292
Зарегистрирован: 14 янв 2011, 20:35
Откуда: Кострома
  • Сайт

Re: Unity3d Tank Tutorial

Сообщение BANNERTM 03 янв 2013, 16:07

странно, он у меня когда разворачивается , он не стоит на месте а его несет куда то в сторону, как на льду - в чем проблема. Да и повороты в движении какое-то странные
BANNERTM
UNITрон
 
Сообщения: 241
Зарегистрирован: 26 фев 2012, 00:13

Re: Unity3d Tank Tutorial

Сообщение IDoNotExist 07 янв 2013, 15:23

Чтобы танк стоял на месте во время разворота, нужно установить центр масс точно в центре относительно всех его колес.
Аватара пользователя
IDoNotExist
Адепт
 
Сообщения: 1432
Зарегистрирован: 23 мар 2011, 09:18
Skype: iamnoexist

Re: Unity3d Tank Tutorial

Сообщение stalogd 18 янв 2013, 21:04

Скиньте пожалуйста исходник из 2го урока в лс
stalogd
UNец
 
Сообщения: 1
Зарегистрирован: 12 янв 2013, 14:22

Пред.След.

Вернуться в Уроки

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

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