Управление автомобилем
Добавлено: 29 июн 2009, 10:54
Решил создать нормальное управление автомобилем. И мне пригодится, и вам думаю будет полезно. За основу взял урок по созданию гонок. Начал его переделывать, изменять... И первое, что не могу понять, это глюк с передними колесами. Мышку по вызову GetAxis юнити у меня не слушается и я прикрутил нажатие пока что только D. Происходит поворот по одной из осей. Беда вот в чем. Какую бы ось не выбрал, колеса поворачиваются странным образом и машина либо ваще проваливается, либо утыкается передним бампером в землю.
код:
демка ftp://ftp.unity3d.ru/Upload/vehicle/vehicle.html
сорцы [ftp]ftp://ftp.unity3d.ru/Upload/vehicle[/ftp]
з.ы. не бейте, я всего лишь учусь
код:
- Код: Выделить всё
var f_l_wheel : Transform;
var f_r_wheel : Transform;
var b_l_wheel : Transform;
var b_r_wheel : Transform;
var speed = 150;
var maxSteerAngle = 10;
private var hasBackWheelContact = false;
rigidbody.centerOfMass = Vector3 (0, 0, 0);
rigidbody.inertiaTensorRotation = Quaternion.identity;
rigidbody.inertiaTensor = Vector3 (1, 1, 2) * rigidbody.mass;
function FixedUpdate () {
var motorForce;
if (Input.GetKey ("w")) motorForce = speed * 0.1;
if (hasBackWheelContact) {
rigidbody.AddRelativeForce (0, motorForce, 0);
}
}
function Update () {
var rotation;
if (Input.GetKeyDown ("d")) rotation = maxSteerAngle * 0.1;
f_l_wheel.localEulerAngles = Vector3 (0, rotation, 0);
f_r_wheel.localEulerAngles = Vector3 (0, rotation, 0);
hasBackWheelContact = false;
}
function OnCollisionStay (collision : Collision)
{
for (var p : ContactPoint in collision.contacts)
{
if (p.thisCollider.transform == b_l_wheel)
hasBackWheelContact = true;
if (p.thisCollider.transform == b_r_wheel)
hasBackWheelContact = true;
}
}
демка ftp://ftp.unity3d.ru/Upload/vehicle/vehicle.html
сорцы [ftp]ftp://ftp.unity3d.ru/Upload/vehicle[/ftp]
з.ы. не бейте, я всего лишь учусь