как реализовать коробку передач?

Программирование на Юнити.

как реализовать коробку передач?

Сообщение GIGABAR 13 окт 2011, 16:52

Как реализовать коробку передач?
есть rpm, например я жму Input = Input.GetAxis("Vertical"); но машина резко дергает с места, пытался через Mathf.Abs но все равно дергает с места, пытался сделать через minrpm и maxrpm,
тщетно, я новичок и моих познаний не хватает, помогите пожалуйста, если тупо написал не пинайте сильно, и не думайте что умственно отсталый, просто болею конкретно, мозги не работют, есть мысль к minrpm он у нас 1000 добавлять по 100 оборотов, и при достижений макс 8000 оборотов начинать цикл заново, и так циклом за циклом, 6 раз точнее передач, до макс скорости, но все равно все тщетно=(, а также как реализовать инерцию? пожалуйста помогите, Заранее благодарен! ^:)^

Синтаксис:
Используется javascript
var kolesoFL: transform; //у меня колеса не wheel коллайдеры, поэтому трансформ
var kolesoFR: transform;
var kolesoBR: transform;
var kolesoBL: transform;
var steeringInput = 0.00;
var maxrpm: float = 8000;
var minrpm : float = 1000;
fuction FixedUpdate ()
{
dvigInput = Input.GetAxis("Vertical");
povorotInput = Input.GetAxis("Horizontal");
kolesoFL.steerAngle = kolesoFR.steerAngle = steeringInput * povorotInput;
if (minrpm < maxrpm) minrpm + 100; //аааааа мой мозги!!! вот тут я торможу жестко! мозги не пашут что дальше 0_о

carforce += Mathf.Abs(dviginput) * rpm/minrpm * Time.fixedDeltaTime;
{
scriptkolesoBL.speed = scriptkolesoBR.speed = carforce; //передает данные на зад. колеса
}
}
 
_https://www.youtube.com/watch?v=Pjl54PuULQw - дрифт гоночки поделываю:))
Аватара пользователя
GIGABAR
UNITрон
 
Сообщения: 266
Зарегистрирован: 11 май 2011, 16:05
Откуда: Алматы

Re: как реализовать коробку передач?

Сообщение Zanilokon 13 окт 2011, 17:11

Синтаксис:
Используется javascript
var kolesoFL: transform;// Почему бы не использовать Wheel Collider?
var kolesoFR: transform;
var kolesoBR: transform;
var kolesoBL: transform;
var dvigInput : float = 0;
var povorotInput : float = 0;
var steeringInput : float = 0;
var maxrpm: float = 8000;
var minrpm : float = 1000;
fuction FixedUpdate ()
{
dvigInput = Input.GetAxis("Vertical");
povorotInput = Input.GetAxis("Horizontal");
kolesoFL.steerAngle = kolesoFR.steerAngle = steeringInput * povorotInput;
if (minrpm < maxrpm){
 minrpm += 100;
}

carforce += Mathf.Abs(dvigInput) * rpm/minrpm * Time.fixedDeltaTime;
{
scriptkolesoBL.speed = scriptkolesoBR.speed = carforce;
}
}
 

Чу-чуть подправил скрипт :)
Добавить zameran123 в Skype
Zanilokon
UNIт
 
Сообщения: 105
Зарегистрирован: 25 июл 2011, 06:28

Re: как реализовать коробку передач?

Сообщение GIGABAR 13 окт 2011, 18:15

Zanilokon писал(а):
Синтаксис:
Используется javascript
var kolesoFL: transform;// Почему бы не использовать Wheel Collider?
var kolesoFR: transform;
var kolesoBR: transform;
var kolesoBL: transform;
var dvigInput : float = 0;
var povorotInput : float = 0;
var steeringInput : float = 0;
var maxrpm: float = 8000;
var minrpm : float = 1000;
fuction FixedUpdate ()
{
dvigInput = Input.GetAxis("Vertical");
povorotInput = Input.GetAxis("Horizontal");
kolesoFL.steerAngle = kolesoFR.steerAngle = steeringInput * povorotInput;
if (minrpm < maxrpm){
 minrpm += 100;
}

carforce += Mathf.Abs(dvigInput) * rpm/minrpm * Time.fixedDeltaTime;
{
scriptkolesoBL.speed = scriptkolesoBR.speed = carforce;
}
}
 

Чу-чуть подправил скрипт :)



спс=) и еще "эмм почему бы не использовать wheelCollider'ы?" Мне просто дали скрипт который вешается на колеса, где все реализовано совсем по другому, без Wheel Collider'ов=) и все таки вопрос остается не решенным. . . . как реализовать коробку передач?
_https://www.youtube.com/watch?v=Pjl54PuULQw - дрифт гоночки поделываю:))
Аватара пользователя
GIGABAR
UNITрон
 
Сообщения: 266
Зарегистрирован: 11 май 2011, 16:05
Откуда: Алматы

Re: как реализовать коробку передач?

Сообщение burlak 14 окт 2011, 14:37

По моим довольно поверхностным знаниям:
1. Есть двигатель со своей функцией зависимости тяги от оборотов. Функцию можно задать точками или кривой.
2. Есть коробка передач. По большому счету интересно только количество передач и передаточное число.

В приницпе это все.
1. Считываем угловую скорость колес - думаю надо считывать два колеса одной оси и усреднять.
2. Определяем скорость вала двигателя.
3. Понимаем какой момент прикладывается на двигатель.
4. Понимаем какой момент приложить на колеса.
5. Прикладываем момент.

Еще есть вопрос с осевым дифференциалом. Будет ли нагрузка перераспределяться между колесами одной оси неравномерно. Но раз новичек, предлагаю на это дело забить.

Собсна механика такая. Автоматическое переключение передач можно сделать потом - прикрутить к механике алгоритм вычисления понижения и повышения передачи не сложно - для спортивной машины обороты надо держать в зоне максимального момента.

Ах да - Т.к. в реальной машине есть сцепление, которое обеспечивает включение передачи не на нулевых оборотах, думаю надо просто немного увеличить мощность движка на нуле - чтобы машина смогла тронуться с места.
С уважением, Дмитрий Бурлаков.
skype: dmitry.burlakov
email: _dmitry.burlakov@gmail.com
Аватара пользователя
burlak
UNITрон
 
Сообщения: 326
Зарегистрирован: 28 янв 2010, 10:21
Откуда: Санкт-Петербург

Re: как реализовать коробку передач?

Сообщение Zanilokon 15 окт 2011, 12:49

burlak писал(а):По моим довольно поверхностным знаниям:
1. Есть двигатель со своей функцией зависимости тяги от оборотов. Функцию можно задать точками или кривой.
2. Есть коробка передач. По большому счету интересно только количество передач и передаточное число.

В приницпе это все.
1. Считываем угловую скорость колес - думаю надо считывать два колеса одной оси и усреднять.
2. Определяем скорость вала двигателя.
3. Понимаем какой момент прикладывается на двигатель.
4. Понимаем какой момент приложить на колеса.
5. Прикладываем момент.

Еще есть вопрос с осевым дифференциалом. Будет ли нагрузка перераспределяться между колесами одной оси неравномерно. Но раз новичек, предлагаю на это дело забить.

Собсна механика такая. Автоматическое переключение передач можно сделать потом - прикрутить к механике алгоритм вычисления понижения и повышения передачи не сложно - для спортивной машины обороты надо держать в зоне максимального момента.

Ах да - Т.к. в реальной машине есть сцепление, которое обеспечивает включение передачи не на нулевых оборотах, думаю надо просто немного увеличить мощность движка на нуле - чтобы машина смогла тронуться с места.

Примерно так я себе єто и предстовлял :)
Добавить zameran123 в Skype
Zanilokon
UNIт
 
Сообщения: 105
Зарегистрирован: 25 июл 2011, 06:28


Вернуться в Скрипты

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

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