Где то так наверное:
Управляшка
WSAD
из особенностей, W и S увеличивают/уменьшают тягу. То есть едет постоянно. Поменять просто - при ОТжатии кнопки W power скинуть на 0.
if ( Input.GetKeyDown(KeyCode.W)) {power = 1500;}
if ( Input.GetKeyUp(KeyCode.W)) {power = 0;}
вместо
if ( Input.GetKey(KeyCode.W)) {power += 3;}
кстати, поменял - стало лучше. в веб-плеере старый вариант.
Пробел - тормоз.
С качеством кода хз ))) Ибо я не кодер )))) Но суть, думаю, понятна. А главное работает )))))
Используется javascript
//колеса
var FR_weel : GameObject;
var FL_weel : GameObject;
var RB_weel : GameObject;
var RL_weel : GameObject;
//платформы на тракторе
var front : GameObject;
//импульс на вращение колес
var power : float;
//торможение
var brake : float;
function Start () {
power = 0.00;
rotate = 50000;
brake = 1500;
//определяем колеса
FR_weel = GameObject.Find("FR_weel");
FL_weel = GameObject.Find("FL_weel");
RB_weel = GameObject.Find("RB_weel");
RL_weel = GameObject.Find("RL_weel");
front = GameObject.Find("front");
//задаем лимит поворота.
front.hingeJoint.limits.max = 1;
front.hingeJoint.limits.min = front.hingeJoint.limits.max - 2;
}
// крутим колеса. постоянно и импульсами. эдакий аналог круиз-контроля
function FixedUpdate () {
FR_weel.rigidbody.AddRelativeTorque(0, 0, power);
FL_weel.rigidbody.AddRelativeTorque(0, 0, power);
RB_weel.rigidbody.AddRelativeTorque(0, 0, power);
RL_weel.rigidbody.AddRelativeTorque(0, 0, power);
}
function Update () {
//прибавляем/убавляем мощность импульса по вращению колес
if ( Input.GetKey(KeyCode.W)) {power += 3;}
if ( Input.GetKey(KeyCode.S)) {power -= 3;}
//при нажатии на пробел блокируем колеса
if ( Input.GetKeyDown(KeyCode.Space))
{power = 0;
FR_weel.rigidbody.angularDrag = brake;
FL_weel.rigidbody.angularDrag = brake;
RB_weel.rigidbody.angularDrag = brake;
RL_weel.rigidbody.angularDrag = brake;
}
//отпускаем пробел разблокируем колеса
if ( Input.GetKeyUp(KeyCode.Space))
{
FR_weel.rigidbody.angularDrag = 1;
FL_weel.rigidbody.angularDrag = 1;
RB_weel.rigidbody.angularDrag = 1;
RL_weel.rigidbody.angularDrag = 1;
}
// определяем то, насколько будет "болтаться" платформа front
front.hingeJoint.limits.min = front.hingeJoint.limits.max - 2;
//задаем поворот кнопками А и Д
if ( Input.GetKey(KeyCode.A)) {front.hingeJoint.limits.max += 1;}
if ( Input.GetKey(KeyCode.D)) {front.hingeJoint.limits.max -= 1;}
//ограничиваем угол поворота в 30 градусов
if (front.hingeJoint.limits.max <= -32) {front.hingeJoint.limits.max = -30;}
if (front.hingeJoint.limits.max >= 32) {front.hingeJoint.limits.max = 30;}
}
Ну и сам проектик:
http://3d-faq.ru/tractor.unitypackage