Керівництво до Car Tutorial (Unity3d) частина 2 з 3

Частина 1
Частина 3
І так, приступимо до вивчення нашого керівництва.

Частина 2: Тонка настройка автомобіля
Якщо ви вивчили 1ую частина цього посібника і зібрали автомобіль, ви вже на етапі де автомобіль є досить-таки працездатним. Але, якщо ви тестували трохи автомобіль, ви напевно помітили, що є все-таки можливість для поліпшення керування автомобілем.

Саме тут тонка настройка виходить на сцену. У розробці гри тонка настройка є важливою частиною, що б зробити свою гру цікавою, складною і дивовижною. Ідея полягає в тому, що коли у вашій грі буде декілька автомобілів, ви напевно захочете що б у них була різна швидкість, опір чи ви може хочете змінити світ на сцені і т. д

Головна сила Unity3d є його можливість тонкої настройки (tweakability) — як ви бачили, всі публічні змінні в скриптах показані в інспекторі, так що ви можете змінити значення, не змінюючи його коді. І навіть більш потужні налаштування: як тільки ви зробили зміни, ви можете відразу побачити результат змін. Вам ніколи не доведеться перекомпілювати гру, що б побачити результат змін.


Центр маси
Тепер найочевидніша річ, яка повинна бути оптимальною, що б автомобіль не зміг дуже легко перекинутися при повороті (якщо ви ще не пробували, то пограйте знову і ускорьтесь трохи, а потім повертайте з боку в бік, прискорений автомобіль буде переворачиватся досить-таки легко). Причина цього перевертання є те, що ми ще не де не визначили центр маси автомобіля. Всі сили, які застосовуються до Rigidbody автомобіля, усі вони застосовуються і до центру маси в Rigidbody. Оскільки центр маси в автомобілі, як правило є не центром автомобіля (ймовірно і не центр маси, яке Unity3d вираховує), ми хочемо встановити центр маси самі.

Положення центру мас для автомобіля залежить від розміщення двигуна та інших факторів, і воно може змінюватися багато разів, від однієї моделі автомобіля до іншого. Для автомобіля в проект даного керівництва центр маси може бути трохи позаду двигуна і трохи вище висоти дна автомобіля. Побачити його положення можна в цій картинці:
image

• Створіть новий ігровий об'єкт і перетягнути його в ігровій об'єкт автомобіль «Car».
• Перейменуйте його в CenterOfMass
• Скиньте положення координат CenterOfMass (натисніть на маленьку зубчасте колесо праворуч від Transform (Положення)
інспектора і виберіть «Reset». Це дасть їй таку ж позицію, як свого батька — автомобіля (Car).
• Відрегулюйте положення як вам зручно. Зробіть це шляхом перетягування або задавши координати положення,
хороша позиція для центру маси цього автомобіля може бути (0, 0.1, 0.65).
• В інспекторі призначте CenterOfMass слот для неї в скрипті компонента «Car».

Загалом, це погано мати CenterOfMass розташований з будь-якої сторони від центру по осі х, тому що це зробить управління дуже дивним і тому ми встановимо змінну х в змозі 0. Ви також можете змінити мету на камері, що б камера дивилася на CenterOfMass (Центр маси) автомобіля, а не на сам автомобіль. Це дасть трохи інше сприйняття гри — пограйте трохи і настроїти ці параметри під свої потреби.

Підвіска
Інший чинник, який може сильно змінити поведінку автомобіля — це його властивостіпідвішування (suspension). Працюй підвіски автомобіля є максимальне тертя між шинами і поверхнею дороги. Коли ви керуєте автомобілем під час зіткнення, вся вертикальна енергії коліс буде видно по рамі автомобіля. Якщо автомобіль не має проміжної структури, це може легко призвести до повної втрати контакту коліс з дорогою, а після цього автомобіль впаде на дорогу без коліс із-за сили тяжіння. Підвіска є проміжною структурою.
image
У нас є три різні змінні для установки в інспекторі -діапазон (range), амортизатор (damper) і пружина (spring). Всі вони є частиною класу WheelCollider, який ми використовуємо на колесах автомобіля. Зліва ми бачимо автомобіль зі стандартними налаштуваннями, і праворуч ми бачимо його з набагато більшим діапазоном підвішування (suspension range). У комбінації властивостей пружини (spring) та амортизатора (damper), ви можете змусити його поводитися, як і всі за формулою перетворення автомобіля у великий вантажівка. Звичайно, графіка обов'язково повинна збігатися з параметрами, щоб зробити автомобіль правдоподібним з оригінальним автомобілем з життя!

Діапазон підвіски
Це довжина підвіски від рами автомобіля (чим менше значення, тим ближче до рами).

Пружини підвіски
Значення, встановлене тут визначає жорсткість пружини підвіски (spring suspension). Установка дуже високого значення зробить більш імовірним, що підвіска буде повністю розтягнута, так що колеса будуть далеко від рами і установка підвішування (suspension) дуже низького значення зробить набагато більш жвавим автомобіль. Коли вивчіть налаштування цього значення, то стане ясно, що маса автомобіля також має велике значення в установки пружиною підвіски (spring suspension). Дуже важкий автомобіль потрібно пружину з більшою жорсткістю, ніж дуже легкий автомобіль. Поумолчанию ми встановили задню пружину підвіски (spring suspension ) менш жорсткої, ніж в передній частині і причина в тому, що центр маси розподіляється більш до передньої частини автомобіля, які потребують поліпшення підвішування (suspension). Граючи з різними значеннями для передньої і задньої підвішування (suspension) може дати дуже різні результати.

Амортизація
Амортизація (Dampening) допомагає контролювати рух упідвішування (suspension). амортизації (Dampening), пружина підвіски (spring suspension) була б розширена і звільнила б свою енергію на неконтрольованої швидкості. Це призведе до вкрай неконтрольованого автомобілю. Амортизація (Dampening) під час керуванням автомобілем перетворює непотрібну кінетичну енергію в теплову, яка буде передана далеко в гідравлічну рідину, що робить поїздку значно легше.

Опір мультиплікатора
Коли ми додали Rigidbody до машини, ми побачили, що він мав властивість опору (drag). Цей опір є інерцією або опором повітря, яке впливає на Rigidbody, воно ускладнює рух. Коли автомобіль розробляється, багато уваги часто приділяється його формі, яка повинна зводити до мінімуму тертя від опору повітря при русі. Але так як автомобіль призначений для руху вперед, форма враховує це — просто погляньте на модель автомобіля в редакторі фронтальної сторони (Front) та зверху (top) і ви зрозумієте, що спереду повітря набагато більше обтікає автомобіль ніж ззаду або збоку.

Ми беремо це до уваги, створюючи свою власну властивістьопір мультиплікатора (drag multiplier), який ми використовуємо замість стандартного властивості опору (drag), вбудованого в RigidBody. Погляньте на цей компонент скрипта «Car» в інспекторі, де ви побачите, що ми маємо змінну Drag Multiplier, яка має вектора X,Y,Z значення. Це дозволяє нам встановлювати різні значення властивості опору (drag) для передньої, бічної і верхньої частини автомобіля, імітуючи реальні умови, ніби ви за кермом.
image
• значення X є опір на бічні сторони автомобіля.
• значення Y є опір на дах автомобіля.
• значення Z є опір на перед автомобіля.
Значення X відіграє важливу роль в управлінні силою, що запобігає машину ковзати вбік при повороті. Чим вище значення X, тим більше в сторонах автомобіля опір. Значення Z є на сьогоднішній день найбільш цікавим, тому що це може призвести до зниження або збільшення сили, яка уповільнює швидкість автомобіля. Якщо ви встановите його на значення менше 1, то ви отримаєте менше опору, швидке прискорення і високу максимальну швидкість. Якщо більше 1, то автомобіль повинен боротися проти більш потужної сили, що робить автомобіль більш повільним. Значення опору (Drag) дуже чутливий, тому ми радимо вам поекспериментувати з невеликими змінами для тонкої настройки опору (Drag). Так як автомобіль не повинен їздити вгору, значення Y не так цікаво, щоб змінювати його. Найбільш важливим фактором, який регулює автомобіль в осіY, це фактор «сила тяжіння», яка впливає на Rigidbody.

Швидкість, поворот і коробка передач
Тепер ми дійшли до більш очевидних змінних, які також мають досить великий вплив на поведінку автомобіля. Змінна максимальна швидкість (Top Speed) не є легким завданням: вона встановлює, наскільки швидко або повільно) ваш автомобіль може їздити. Так як наша модель автомобіля набагато простіше, ніж в моделі реального автомобіля, на прискорення впливає (крім опору (drag)), змінна максимальна швидкість (Top Speed) також побічно впливає на прискорення. Створений автомобіль дуже швидко повинен досягти високої швидкості. Якщо ви хочете, грати з максимальною швидкістю і прискоренням, ви можете спробувати налаштувати значення максимальна швидкість (Top Speed) і змінної Z опору (Drag Z) (опір повітря в напрямку спереду (Front)).

Для включення у нас є дві змінні — максимальний поворот (Maximum Turn) та мінімальний поворот (Minimum Turn). Обидва значення означають на скільки добре автомобіль повертає. Високе значення означає чудові можливості повороту, а низьке значення означає дуже обмежені можливості повороту. Ми використовуємо їх в скрипті автомобіля, щоб змінити здатність автомобіля до «плавного» повороту автомобіля на високій швидкості.

• При дуже низьких швидкостях, це значення встановлюється для максимального повороту (Maximum Turn).
• Чим вище швидкість автомобіля стає, тим ближче «здатність повороту» до значення мінімальний поворот (Minimum Turn).

Все це зводиться до того, що коли використовується значення за замовчуванням для автомобіля (які дорівнюють 10 мінімального повороту (Minimum Turn) 15максимального повороту (Maximum Turn)) є те, що стає все важче повертати коли автомобіль їздить швидко. Це виглядає більш реалістично, гарантуючи, що ви не зможете просто в'їхати на повній швидкості в крутий поворот і чекати, того що машина «въедит» у цей поворот. Ви можете поекспериментувати з обома значеннями, щоб зробити автомобіль краще або гірше при повороті на маленькій чи великій швидкості.

Нарешті ми дійшли до зміноюкоробка передач ( Number Of Gears). Коли ми доберемося до частини, де ми будемо вивчати скрипт автомобіля (Car) ми побачимо, як це використовується у розрахунках. Так як автомобіль заснований на простій моделі, трансмісія не імітує реальне поведінкакоробки передач. Тим не менш, вона використовуються для розрахунку сили двигуна, і можливо, більш важливо, що вона використовується в скрипті управління звуком (controlling the sound) для зміни звуку двигуна, грунтуючись на те, яка зараз передача і як швидко ми в даний час їздимо. Це створює автомобільний звук на різних передачах, як у реалістичною моделі автомобіля. Установка значеннякоробки передач ( Number Of Gears), просто створює ілюзію через звук, скільки передач автомобіль має.

Експорт автомобіля у вигляді пака
Якщо ви слідували керівництву і зібрали свою власну версію автомобіля, тепер у вас є знання, необхідні для її реалізації в своїх проектах. Найпростіший спосіб перенести його між проектами, це зробити Unity Package (Unity Пак) з Prefabs

По перше ми перетягнемо автомобіль (Car) в префаб (Prefab), що б ми могли використовувати його повторно, не роблячи збірку і параметри:
• у панелі проекту (Project view) натисніть Створити (Create) і виберіть «префаб» (Prefab). Ви отримаєте порожній префаб у панелі проекту (Project view) з назвою «new prefab».
• Перейменуйте Prefab «Race Car» (гоночний автомобіль) (гарна назва) або будь-яке інше ім'я по своєму смаку.
• Перетягніть ігровий об'єкт «Car» (автомобіль) з панелі ієрархії (Hierarchy view) префаб (Prefab).

Це вже було зроблено для вас (знаходиться в Prefabs/Car), але тепер у вас також є свій власний варіант автомобіля.

Є кілька частин, які необхідні окрім Prefab Car (Автомобільного Префаба) для того, щоб створити пак, який буде працювати з нуля. Це Skidmarks, Main_Camera і Directional_Light_Car_Road. На щастя, вони були вже перенесені в Prefabs. Є також декілька скриптів, які ми повинні включити в наш пак, які не будуть включені, якщо ми не вказуємо їх: SoundToggler.js, ImageEffects.cs і ImageEffectsBase.cs. Причина в тому, що ці скрипти не включені в сцені, але використовується з допомогою інших скриптів, коли гра запущена. Скрипти зображень (ImageEffects.cs таImageEffectsBase.cs) включені у Pro Standard Assets, але ми їх включаємо в пак, так що вони зможуть бути імпортовані в абсолютно порожній проект і будуть працювати.
image

• У панелі проекту (Project view) виберіть всі з цих пунктів:
• Prefabs/VFX: Directional_Light_Car_Road, Main_Camera, Skidmarks
• scripts/Javascript: SoundToggler.js
• Pro Standard Assets/Image Based/ImageEffects.cs та ImageEffectsBase.cs
Car Prefab (Автомобільний префаб), який ви створили.
• Натисніть кнопку «Експортувати пак» (Export package)
• У діалоговому спливаючому вікні переконайтеся, щовключити залежності (Include dependenci) галочка стоїть. Це збере всіактиви (Assets), які ви вибрали, а також залежні від них активи (Assets), крім активів (Assets), які отримують доступ тільки через скрипти.
• Натисніть кнопку Експорт (Export), задавши ім'я для вашого пака і зберігаємо!

Процес імпорту вашого автомобіля у власному проекті:

• У своєму новому проекті перейдемо до Assets->Import package ...
• Перейдіть до паку (package), який ви зберегли і відкрийте його.
• Переконайтеся, що вибрано (Натисніть «All»), а потім натисніть Import.
Unity буде імпортувати всі активи (Assets) та Prefabs з'явиться у панелі проекту (Project view), які можна використовувати в сцені проекту.

Ви абсолютно безкоштовно можете взяти автомобіль і використовувати його в своїх проектах, і тепер у вас є знання, що б створити і налаштувати автомобілі і передати їх між проектами — тому, будь ласка, ідіть вперед і зробіть справді дивовижну гоночну гру!

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.