Прискорення і гальмування

Господа хочу у вас запитати яким чином можна реалізувати прискорення і гальмування? Мені потрібен плавний набір швидкості припустимо з 0 до 50 одиниць, при цьому необхідно щоб при розвороті об'єкта він не продовжував рухатися за інерцією в колишньому напрямі, а вектор швидкості так же змінював свій напрямок. Об'єкт знаходиться в безповітряному просторі, так що тертя і гравітації немає в принципі, самостійно об'єкт гальмувати не може. Буду дуже вдячний за допомогу.

Є два способи вирішення, за допомогою фізики ЮНИТИ, або математикою і фізичними законами.

У ЮНИТИ можна прикласти силу до об'єкта, задати йому масу і опір, прикладати зустрічні сили, які будуть гасити рух.

Або відкрити підручник фізики і розібратися з формулами руху. Мені більше цей спосіб подобається.

. [email protected];
Платні консультації, програмування ваших проектів Unity3d, C #, IOS, Android.

Прихований текст: показати

Як це зробити теоретично мені зрозуміло, мені фактичний приклад потрібен, бо пишу на c # і знайомий з ним усього дня 4) У мене є операція задає швидкість об'єкту: rigidbody.velocity = transform.up * accel в Update'е. Ось потрібно як то визначити значення для змінної accel, щоб при натисканні клавіші вона змінювалася з 0 до 50 за 10 секунд. Я все намагаюся з'ясувати які оператори і функції потрібно задіяти щоб таке реалізувати, але ніде ніякої інформації знайти не можу і все мовчать. Або можна йти через вплив сил, як в запропонованому вами першому варіанті, але гасити їх протилежно спрямованими по вектору силами під час повороту, хоча це як мені здається більш Довга. Як варіант можна прикласти силу до об'єкта, а потім просто повернути вектор її впливу? Якщо так то як? Мені потрібно дізнатися саме оператори і конструкції якими це можна здійснити. Заздалегідь дякую

Для ковзання і уповільнення використовуй physics material (5 прикладів є в стандартних Ессет).
Як прикласти силу в зворотну сторону?
gameObject.Rigidbody.AddForce (- transofrm.forward * tvoya_sila);
gameObject.Rigidbody.AddForce (- rigidbody.velocity * tvoya_sila); // тут сила повинна бути менше 1

Якщо я. звичайно, нічого не наплутав

Сенкс) Можете ще підказати чи змінюється напрямок вектора прикладеної сили? А то у мене об'єкт за інерцією продовжує рухатися боком після повороту Або ж під час повороту доведеться гасити силу і знову застосовувати її на новий напрямок?

forward - напрямок, куди дивиться об'єкт.
Щоб об'єкт рухався прямо, а не в бік, то тобі потрібно як-небудь перенаправити velocity в сторону forward

Якщо velocity задавати безпосередньо, тобто як у мене через rigidbody.velocity = transform.up * accel поміщеного в Update, то поворот проходить коректно, але якщо використовувати той же AddForce, то при повороті залишається залишкова сила яка після розвороту якийсь час рухає об'єкт по колишньому курсу. Ви пропонуєте спочатку надати прискорення через AddForce, а при повороті змінювати velocity у rigidbody? А як бути з розворотом якщо розгін об'єкта ще не закінчений? Тобто сила до кінця повністю не використана, а об'єкт повернувся. Швидкість не залишиться на значенні отриманому на момент повороту?

Схожі статті