• Increase font size
  • Default font size
  • Decrease font size
  • default color
  • cyan color
  • red color
Создание механизма Автомобиля
Автор: Administrator   
05.06.2011 09:06

 

 

 

Авторперевода: Sok@l

Источник: Car Tutorial

Car Tutorial on Unity3D

В течение долгого времени были темы на Форуме Unity3d, спрашивающем о том, как настроить автомобильную буровую установку, кажется, нет многих хороших обучающих программ там, таким образом я решил написать одно мое собственное, которое, мы надеемся, объяснит часть его для Вас.

Шаг 1: Импортирование Объекта Игры.

Первый шаг в создании автомобильной установки должен настроить модель в редакторе так, чтобы это содержало все необходимые компоненты. Когда Вы создаете автомобильную модель в своей трехмерной программе моделирования (я использую майя), Вы хотите удостовериться, что у Вас есть тело, и все четыре колеса автомобиля, смоделированного и нагруженного в Unity. У Вас могут быть дополнительные компоненты, но это становится все более и более запутывающим больше объектов, с которыми Вы имеете дело. Я только рекомендовал бы иметь больше, если бы Вы строили игру, которая потребовала, чтобы автомобиль, чтобы иметь отдалился группы или своего рода система повреждения.

Здесь Вы можете видеть основную установку, которую я использую. Я сгруппировал все колеса в одном объекте так, чтобы я мог легко скрыть их в иерархии.

Шаг 2: Приложение Компонентов Физики

Во-первых, приложите rigidbody к своему автомобильному объекту. нажмите на Component/Physics/Rigidbody в меню. Это заставит автомобиль смоделировать rigidbody, делая это часть окружающей среды физики Unity. Чтобы иметь это должным образом реагируют на столкновения и ведут себя как автомобиль, мы должны приложить коллайдеры.

Я вообще создаю пустой объект игры, и удостоверяюсь, что положение и вращение установлены в (0,0,0). Переименуйте это "Коллайдеры", это будет служить контейнером для всех коллайдеров, которые будут применены к автомобилю. Тогда, создайте несколько объектов игры и поместите их в этом объекте. Тогда выберите их и щелкните Component/Physics/BoxCollider в меню. Это позволит Вам приближать общую форму автомобиля, все еще держа это простой.

ОТМЕТЬТЕ: я вообще создаю коллайдеры как отдельные детские объекты основной части, этот способ, которым у меня могут быть многократные коллайдеры в общей форме автомобиля. Вы могли использовать коллайдер петли для этого, но сцепиться, коллайдеры не работают хорошо для объектов, перемещающихся в высокие скорости.

Чтобы заставить автомобиль вести себя должным образом, Вы можете использовать Unity3d, построенный в компонентах Коллайдера Колеса. Они - по существу расширения двигателя физики, которые используют raycast, чтобы определить расстояние к основанию, тогда они применяют силу на rigidbody основанное на сжатии "весны".

Создайте другой пустой объект игры, точно так же, как Вы сделали для коллайдеров, и называете этот “WheelColliders”. Вы могли поместить это в объект "Коллайдеров", но я нахожу легче организовать их отдельно. Затем, поместите четыре пустых объекта в этот контейнер и выберите Component/Physics/WheelCollider в меню. Это приложит коллайдеры колеса, которые могут формироваться, чтобы вести себя как реальные колеса. Поместите эти коллайдеры так, чтобы они были о том, где они должны быть на Вашем автомобиле. Они невидимы, таким образом Вы можете поместить их в немного различные места, но пытаться получить их настолько точный насколько возможно.

ОТМЕТЬТЕ: у Коллайдеров Колеса есть собственность под названием "Радиус" так же как один названный “Расстояние Приостановки”, это определяет радиус и весеннюю длину действительного колеса в двигателе физики. Вы должны будете приспособить их собственность так, чтобы она близко соответствовала фактическому радиусу и расстоянию приостановки колеса в Вашей модели.

Шаг 3: Формирование Установки Физики

Теперь, когда у Вас есть все настроенные части, Вы должны tweaked (щипнуть) их так, они сотрудничают должным образом. Я вообще моделирую свои транспортные средства прочь существующих автомобилей реального мира. Это - безопасный способ гарантировать, что Ваш автомобиль ведет себя относительно хорошо.

Есть три ключевых фактора, которые Вы должны будете установить.

·      масса транспортного средства(the vehicle mass)

·      весна приостановки и демпфирование(the suspension spring and damping)

·      трение шины(the tire friction)

Начинаясь с самого простого из этих трех, массы транспортного средства. Я вообще установил массу своих транспортных средств к ценности приблизительно 1000-2000 килограммов. В зависимости от того, как Вы хотите, чтобы Ваш автомобиль вел себя. Вы можете использовать любую ценность, которую Вы любите, но если бы Вы идете для реалистической установки, я рекомендовал бы остаться в пределах этих ценностей. Чтобы установить массу, выберите свой основной автомобильный объект, и смотрите в инспекторе. Должен быть счет для “Rigidbody”, в этом счете, есть собственность, названная массой. Войдите в выбранную ценность, и пресса вступает. Помните, все единицы в двигателе физики находятся в Метрике, таким образом эта ценность будет в килограммах.

ОТМЕТЬТЕ: если Вы хотели бы преобразовать английские единицы в Метрику, просто напечатайте ее в Калькулятор Google и Google, автоматически преобразует это для Вас.

Теперь формировать коллайдеры колеса. Вы должны будете сделать это ко всем коллайдерам, столь выберите их по одному и войдите в ценности, которые Вы любите.

Счет весны приостановки позволит Вам устанавливать весенние ценности. Они важны для заставления Вашей автомобильной приостановки вести себя в реалистической манере, и не только броске Вашего автомобиля через карту. В зависимости от массы Вашего автомобиля Вы должны будете приспособить весну. Вообще ценность между 2000-5000 сделает для транспортного средства среднего веса, пока Вы устанавливаете ценность демпфирования должным образом. Демпфирование приостановки замедляет норма весеннего расширения. Это препятствует тому, чтобы весны колебались назад и вперед. Я использовал ценность 50 в этом примере, но Вы, возможно, нуждаетесь больше, если длина приостановки установлена дольше.

Тогда Вы должны tweaked (щипнуть) передовое и поперечное трение колеса. Передовое трение определяет количество трения на колесе, сыпля направление, перед которым это стоит, Поперечное трение определяет количество трения, которое препятствует тому, чтобы колесо скользило боком. Если Вы хотели бы знать больше о том, как эти ценности работают, ищут их в Справочном Руководстве Unity здесь

<http://unity3d.com/support/documentation/Components/class-WheelCollider.html>

Я не рекомендовал бы изменить ценности асимптоты, пока Вы не знаете точно, как они работают, намного легче изменить ценность "Чопорности". Это - по существу множитель для кривой, когда набор ниже, она уменьшает обе ценности линейно. Вы будете хотеть этот набор значений довольно низко, вообще меньше чем 0.1, если Вы будете хотеть, чтобы Ваш автомобиль скользил приятно. Если поперечная чопорность трения установлена слишком высоко, у Вас могут быть некоторые проблемы стабильности, автомобиль будет придерживаться дороги так, что, когда Вы пытаетесь повернуться в высоких скоростях, Ваш автомобиль будет весьма буквально катиться прочь в космос.

Шаг 4: Письмо Подлинника Контроля

Теперь, когда нам настраивали автомобиль в редакторе, мы можем продолжить писать подлинник, чтобы управлять им. Поскольку я хочу, чтобы этот автомобиль вел себя как реальный гоночный автомобиль, подлинник использует систему, чтобы моделировать различные механизмы, Каждого с различным передаточным отношением.

Коллайдеры колеса Unity просты использовать, и позволить пользователю легко заставлять машинную ценность вращающего момента приводить колеса в действие, но как мы знаем, что установить эту ценность в?

То, что я делаю, определяют максимальный машинный Вращающий момент, максимальный и минимальный машинный ОБОРОТ В МИНУТУ, и множество передаточных отношений. Передаточное отношение определяет, сколько вращений двигатель делает, за вращение колеса. Проще говоря, это позволяет колесам вращаться в выше и более высокие скорости, все еще поддерживая постоянный машинный ОБОРОТ В МИНУТУ. Автомобиль должен переключиться на более высокий механизм (механизм с более низким отношением), чтобы поддержать скорость без достижения двигателя, это - максимальная возможная скорость.

Так, потому что у нас есть ОБОРОТ В МИНУТУ колеса (он дан объектами коллайдера колеса), мы можем определить машинный ОБОРОТ В МИНУТУ, умножая скорость колеса отношением текущего механизма. Используя это мы можем определить, в каком механизме двигатель должен быть.

·      Если расчетная машинная скорость больше чем максимальный машинный ОБОРОТ В МИНУТУ, петля через все механизмы, проверяя, чтобы видеть, является ли машинный ОБОРОТ В МИНУТУ, умноженный тем передаточным отношением, меньше чем максимальный машинный ОБОРОТ В МИНУТУ, если это, затем переключиться на тот механизм. Это по существу говорит, если двигатель идет слишком быстро, сделайте его так, это не.

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

Давайте рассмотрим. Теперь у нас есть ценность для машинного ОБОРОТА В МИНУТУ, и наш подлинник автоматически переключит механизмы, если это будет выше или ниже, чем это должно быть. Теперь мы только должны применить вращающий момент к колесам в зависимости от механизма.

Вращающий момент относился к колесам, должен быть максимальный машинный вращающий момент, разделенный на передаточное отношение текущего механизма. Это сделает это так, чтобы вращающий момент, примененный двигателем, увеличился, поскольку Вы переходите, и уменьшения, поскольку Вы переходите вниз.

Чтобы сделать автомобиль управляемым игроком, только умножьте вращающий момент на колесах входной ценностью, если Вы используете “Вход. GetAxis ()”, это будет работать отлично. Чтобы заставить автомобиль держаться, Вы можете только установить регулировать угол колес к основной ценности, умноженной входной ценностью.

Шаг 5: АЙ

Для большинства мчащихся применений простой waypoint АЙ система работает чудесно. Пользователь первоначально настраивает ряд пунктов, в ключевых местоположениях вокруг следа. Автомобиль будет тогда ездить на велосипеде через эти пункты, регулируя себя к следующему пункту в списке, как только это добирается там, процесс просто повторяется. Этот метод эффективен и удобен, потому что он устраняет все потенциальные проблемы обнаружения пути и позволяет пользователю определять точно, как они хотят, чтобы автомобиль переместился.

Путем это будет сделано, с простым рядом Объектов Игры, каждого в ключевых местоположениях вокруг следа, у автомобиля тогда будет Variables для корня, преобразовывают, который это перероет, когда игра сначала будет работать. От этого hirarchy АЙ просто создаст множество векторов. Используя transform (преобразовать) таким образом позволяет пользователю перепозиции waypoints во время времени выполнения для всех АЙ управляемые транспортные средства, позволяя им легко tweaked (щипнуть) путь АЙ средства управления автомобиль.

Во-первых, настройте пустой объект игры, выбирая Создавание Пустого опции в меню Game Object. Тогда, используя окно инспектора, переименуйте этот объект “Waypoints”. Это будет использоваться как контейнер для всех других waypoints, только чтобы облегчить справляться.

ОТМЕТЬТЕ: Гарантируйте, что Ваш контейнерный объект “Waypoints” в положении и вращении (0,0,0)

Затем, создайте другой пустой объект игры, назовите его “Waypoint_0 ″, и drag and drop (перетащили и опустили) его в контейнере “Waypoints”. (Эти объекты игры не должны иметь любые компоненты, приложенные, потому что мы только используем их положения, таким образом у них только должен быть неплатеж, "Преобразовывают" компонент.)

Поместите этот waypoint небольшие пути перед стартовой линией для Вашего курса, и дублируйте это, переименовывая копию “Waypoint_1 ″ и поместите копию вдоль пути курса, продолжите этот процесс, помещающий пункты равномерно, удостоверяясь, чтобы дать им в цифровой форме увеличивающиеся названия, пока Вы не достигаете финишной черты или возвращаетесь к линии начала. (Поскольку эти пункты автоматически прочитаны в АЙ подлинник, Вы хотите держать то же самое соглашение обозначения).

ДОПОЛНИТЕЛЬНАЯ СЕКЦИЯ

Одна вещь я, выполнение reccomend настраивает штуковину (маленькое изображение редактора) так, чтобы Вы могли видеть местоположение всех Ваших waypoints в редакторе. Сделайте простой подлинник по имени “DrawWaypointGizmos”. Тогда, напишите следующий код …

function OnDrawGizmos () {

var waypoints = gameObject.GetComponentsInChildren( Transform );

for ( var waypoint : Transform in waypoints ) {

Gizmos.DrawCube( waypoint.position, Vector3.one );

}

}

По существу то, что это делает, является находками все компоненты transform (преобразовать) в текущем объекте игры и все, это - дети, и тянет изящный небольшой куб в их месте. Только приложите этот подлинник к контейнеру “Waypoints”, и Вы будете в состоянии видеть все, это - transform (преобразовать).

Хорошо, у нас есть настроенный waypoints, так теперь мы должны сделать АЙ подлинник. Удачливый для нас, единственная вещь АЙ должна сделать по-другому, чем игрок, решают который способ крутить колеса, вместо того, чтобы ввести пользователя. Поскольку Functions, который мы используем, чтобы получить пользовательский вход просто, возвращает ценность от-1.0 до 1.0, мы можем только заменить “Вход. GetAxis ()” Functions, с Variables, затем в другом Functions, мы можем только установить тот Variables в любую ценность между-1.0 и 1.0 и АЙ, автомобиль будет держаться, как если бы это управлялось игроком.

Дублируйте актив “Car_Script” и откройте его в редакторе подлинника. Наверху, где мы определяем variables, добавьте новую линию. Эта линия определит частный Variables, названный “waypoints”, и установит, это - тип, чтобы быть множеством. Затем, определите другой частный Variables, на сей раз с целым числом, названным “currentWaypoint” с ценностью по умолчанию 0, затем назначьте Variables, названный “waypointContainer” как тип “GameObject”. Подлинник найдет, что waypoint преобразовывает, перерывая детей этого gameObject. Наконец, определите два новых частных плавания, названные “inputSteer” и “inputTorque”, Они будут variables, которыми мы заменяем вход игрока.

Вершина Вашего подлинника должна теперь смотреть кое-что как это …

var FrontLeftWheel : WheelCollider;

var FrontRightWheel : WheelCollider;

 

 

Передаточное отношение вара: плавайте [];

var GearRatio : float[];

var CurrentGear : int = 0;

var EngineTorque : float = 600.0;

var MaxEngineRPM : float = 3000.0;

var MinEngineRPM : float = 1000.0;

private var EngineRPM : float = 0.0;

var waypointContainer : GameObject;

private var waypoints : Array;

private var currentWaypoint : int = 0;

private var inputSteer : float = 0.0;

private var inputTorque : float = 0.0;

Теперь, создайте новый Functions по имени “GetWaypoints”, и внутри, напишите

var potentialWaypoints : Array = waypointContainer.GetComponentsInChildren( Transform );

waypoints = new Array();

for ( var potentialWaypoint : Transform in potentialWaypoints ) {

if ( potentialWaypoint != waypointContainer.transform ) {

waypoints[ waypoints.length ] = potentialWaypoint;

}

}

весь этот простой Functions делает взятие в исходном контейнере, и берет все transform (преобразовать) в этом и всех его детей. Тогда, это образовывает петли через те возможные waypoints, и определяет, являются ли они исходным контейнером. Если они не, это добавляет их ко множеству waypoint. Мы должны сделать это, потому что иначе это рассматривало бы контейнер как другой waypointa, и автомобили будут держаться от дороги. Теперь, только вызовите эту функцию в Functions "Начала" Вашего АЙ подлинник. Это автоматически соберет хороший список waypoints для более позднего использования.

Теперь, сделайте Functions по имени “NavigateToWaypoint”. В этом Functions мы поместим весь код, чтобы измениться, вход регулируют и закручивают ценности. Путем мы сделаем это, находя положение waypoint относительно автомобиля, тот способ, которым мы можем узнать, как далеко с обеих сторон автомобиля пункт. Вы можете сделать это использование “TransformPoint ()” Functions, давая Вам, местоположение любого пункта относительно вращения и положения потока преобразовывает.

Линия должна смотреть кое-что как это …

var RelativeWaypointPosition : Vector3 = transform.InverseTransformPoint( Vector3( waypoints[currentWaypoint].position.x, transform.position.y, waypoints[currentWaypoint].position.z ) );

ОТМЕТЬТЕ: причина из-за чего я использую новый Vector3 вместо прямого waypoint положения, состоит в том, потому что я хочу, чтобы транспортное средство игнорировало весь вертикальный вход.

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

Входная ценность вращающего момента будет немного более сложной, мы хотим, чтобы автомобиль ускорился все время за исключением того, когда это поворачивается очень резко. Используя, если утверждение, мы проверяем, является ли абсолютная величина регулировать угла меньше чем 0.5, если это тогда установлено входной вращающий момент в относительное положение на оси Z, разделенной на величину относительного положения очень как регулировать вход, (Вы можете также вычесть абсолютную величину регулировать угла, только чтобы сделать это немного лучше вокруг углов). Если регулировать ценность не ниже 0.5, просто установите входной вращающий момент в 0.

Последней вещью, которую мы должны добавить, является код, чтобы ездить на велосипеде через waypoints. Только сделайте, если утверждение, которое проверяет, является ли величина относительного waypoint положения меньше чем ценность терпимости, (я вообще использую 10 или 15), затем увеличивает “currentWaypoint” Variables, затем проверьте, больше ли “currentWaypoint” чем или равен числу waypoints во множестве, если это - затем установило это в 0. Это сделает петлю следа, как только она достигает финала waypoint, она подскочит к первому снова.

Заключительный Functions должен закончить тем, что был похож на это …

var RelativeWaypointPosition : Vector3 = transform.InverseTransformPoint( Vector3( waypoints[currentWaypoint].position.x, transform.position.y, waypoints[currentWaypoint].position.z ) );

inputSteer = RelativeWaypointPosition.x / RelativeWaypointPosition.magnitude;

if ( Mathf.Abs( inputSteer ) < 0.5 ) {

inputTorque = RelativeWaypointPosition.z / RelativeWaypointPosition.magnitude - Mathf.Abs( inputSteer );

}else{

inputTorque = 0.0;

}

if ( RelativeWaypointPosition.magnitude < 15 ) {

currentWaypoint ++;

if ( currentWaypoint >= waypoints.length ) {

currentWaypoint = 0;

}

 

}

 

}

Теперь все, что Вы должны сделать, вызывают эту функцию в петле обновления, и заменяют “Вход. GetAxis ()” вызовы функции с “inputSteer” и ценностями “inputTorque”, и Вы должны иметь АЙ, который двигается вокруг Вашего следа.

Этот код для основного waypoint, базируемого АЙ, таким образом могли бы быть некоторые проблемы с проведением особенно хитрых углов, или изменением направлений очень быстро, но пока Ваш курс является относительно большим, и Вы не ожидаете 270 крутых поворотов степени, я думаю, что это будет работать очень хорошо.

Шаг 6: Создание всего этого Хороший Взгляд

Теперь, у нас есть автомобиль, который двигается вокруг, единственная проблема состоит в том, что это все еще не очень прохладно без звуковых эффектов и прялок. Чтобы сделать машинные звуки, мы можем приложить звуковой источник, выбирая наш автомобиль и входя в меню и выбирая Components/Audio/AudioSource, Это создаст источник для нашего звука, таким образом мы сможем играть это. Выберите тело своего автомобиля, и откройте новый Звуковой Исходный счет, внутри должно быть несколько вариантов, которые Вы должны будете изменить. Во-первых, drag and drop (перетащили и опустили) звук, который Вы хотели бы, чтобы автомобиль играл как машинный рев в щель. Затем, удостоверьтесь, что Вы проверяете "Петлю" и “Игру на Активном” коробки, это гарантирует, что Ваш звук будет постоянно играть, как только Вы начинаете.

ОТМЕТЬТЕ: Для машинного звука мы будем автоматически регулировать подачу, удостоверьтесь свои звуковые петли, и остается при постоянной подаче полностью через.

Теперь, когда у нас есть настроенный аудио, мы должны изменить его, чтобы казаться спокойными. Войдите в свой автомобильный подлинник, и добавьте новую линию. Мы хотим, чтобы машинный звук увеличился в подаче как оборот в минуту машинных увеличений. Этим путем, звук будет выше, когда автомобиль ускорится, пока это не переключает механизмы, когда это внезапно спрыгнет. Вы машинный ОБОРОТ В МИНУТУ настроил, так же как максимальный машинный ОБОРОТ В МИНУТУ, итак, почему не только делятся один на другой? С подразделением Вы получаете ценность между 0 и 1, прекрасный для того, чтобы изменить подачу.

Таким образом новая линия в Вашем подлиннике должна смотреть кое-что как это …

audio.pitch = Mathf. Abs (EngineRPM / MaxEngineRPM) + 1.0;

ОТМЕТЬТЕ: я добавил 1.0, потому что я хотел, чтобы машинная праздная подача была оригинальной подачей звука, и самой высокой подачей, чтобы быть дважды этим.

Теперь, на колесах. В основном, мы хотим, чтобы колеса были при ориентации автомобиля, но вращаемый вокруг X и Оси Y, так, чтобы они повернулись, когда они находятся в контакте с основанием. Самый легкий способ сделать это, должно выровнять колеса к приостановке и объединить вращение автомобиля вращением колеса. Чтобы поместить видимое колесо, сначала создайте Javascript. Пойдите в меню Asset и выберите Create/Javascript. Теперь, поскольку я объяснил ранее, работа WheelColliders, проектируя луч вниз и находя расстояние к основанию. Мы можем повторить это и найти положение колеса. В основном, назовите Физику. Raycast () и место колесо, где луч связывается с основанием, затем потяните это, поддерживают вдоль приостановки радиусом колеса. Это сделает это так, чтобы фактический пункт контакта колеса был на основании а не центре его.

Код должен смотреть кое-что как это.

var CorrespondingCollider : WheelCollider;

function Update () {

var hit : RaycastHit;

var ColliderCenterPoint = CorrespondingCollider.transform.TransformPoint( ColliderCenterPoint.center );

if ( Physics.Raycast ( ColliderCenterPoint, -CorrespondingCollider.transform.up, hit,  CorrespondingCollider.suspensionDistance + CorrespondingCollider.radius ) ) {

transform.position = hit.point + (CorrespondingCollider.transform.up * CorrespondingCollider.radius);

}else{

transform.position = ColliderCenterPoint + CorrespondingCollider.transform.up * (CorrespondingCollider.suspensionDistance - CorrespondingCollider.radius);

}

}

Теперь, когда колеса помещены, где они должны быть, мы должны установить их вращение. Это очень легко. Определите частный Variables в своем подлиннике по имени “RotationValue”, это будет ценностью (в степенях) для вращения колеса вокруг оси. Теперь, чтобы объединить вращение колеса с тем из коллайдера колеса, Вы должны были бы обычно рисковать в математику кватерниона, но к счастью, Unity делает это для нас =). Только определите вращение колеса как кватернион и умножьте это с вращением коллайдера колеса.

Последний шаг должен увеличить RotationValue, у коллайдеров колеса удобно есть ценность, названная оборотом в минуту, таким образом мы только должны преобразовать это до степеней в секунду и добавить это к ценности вращения.

Код должен смотреть кое-что как это …

transform.rotation = CorrespondingCollider.rotation * Quaternion.Euler( RotationValue, CorrespondingCollider.steerAngle, 0 );

RotationValue += CorrespondingCollider.rpm * ( 360/60 ) * Time.deltaTime;

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

Теперь, горящий вопрос, “Как, я произвожу, когда мой автомобиль скользит вокруг?” У коллайдеров колеса есть замечательный Functions по имени GetGroundHit. Хит основания содержит всю информацию, о которой имеет коллайдер колеса, это - скорость относительно основания, используя это мы можем проверить ценности промаха! Мы можем поручить заранее приготовленному объекту быть созданным, когда колеса уменьшаются, затем проверьте хит основания, если они подсовывают, затем иллюстрируют примерами prefab. Это - отличный способ сделать дым, или активизировать след renderer, чтобы сделать тормозные следы шины.

Я вообще делаю отдельный объект игры для каждого колеса и прилагаю след renderer от пункта меню Component/Particles/TrailRenderer до каждого из них, затем если соответствующее колесо уменьшается, я только позволяю этому renderer. Это - легкий способ сделать короткие марки шины на основании, и это выглядит довольно хорошим!

Код должен быть похожим на это

var CorrespondingHit : WheelHit;

CorrespondingCollider.GetGroundHit( CorrespondingHit );

if ( Mathf.Abs(CorrespondingHit.sidewaysSlip) > 0.5 ) {

Instantiate( SlipPrefab, transform.position, Quaternion.identity );

TireTrailRenderer.enabled = true;

}

Это в значительной степени резюмирует это. Я надеюсь, что эта обучающая программа помогла, Вы можете всегда связываться со мной в Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript , если Вы нуждаетесь больше в совете. Полный проект - avaliable для загрузки внизу страницы, и все ценности, которые я использовал для параметров в подлинниках, упомянуты ниже. Счастливое вождение!

Я смоделировал свой учебный автомобиль после того, как Audi R8, ценности в проекте в качестве примера следующие.

ЦЕННОСТИ RIGIDBODY

·      Масса:1600 кг

ЦЕННОСТИ КОЛЕСА(WHEEL VALUES)

·      Расстояние Приостановки(Suspension Distance): 0.2 м.

·      Радиус Колеса(Wheel Radius): 0.4 м.

·      Весна Приостановки(Suspension Spring): 5500 N

·      Отправьте Чопорность Трения(Forward Friction Stiffness): 0.092

·      Поперечная Чопорность Трения(Sideways Friction Stiffness): 0.022

ЦЕННОСТИ ПОДЛИННИКА

·      Машинный Вращающий момент(Engine Torque): 600 N*M

·      ОБОРОТ В МИНУТУ Макса Энджина: 3000

·      ОБОРОТ В МИНУТУ Двигателя Минуты: 1000

ПЕРЕДАТОЧНЫЕ ОТНОШЕНИЯ

·      1-ый Механизм: 4.31: 1.0

·      2-ой Механизм: 2.71: 1.0

·      3-ий Механизм: 1.88: 1.0

·      4-ый Механизм: 1.41: 1.0

·      5-ый Механизм: 1.13: 1.0

·      6-ой Механизм: 0.93: 1.0

 

Вход на сайт

Онлайн

Сейчас 47 гостей онлайн

Понравился сайт?


Счетчики

Rambler's Top100

Облако тэгов

Joomla Extensions



Карта сайта