Tuesday, 12 April 2011

car script

var frontOffSideCollider : WheelCollider;
var frontNearSideCollider : WheelCollider;
var rearNearSideCollider : WheelCollider;
var rearOffSideCollider : WheelCollider;

var frontNearSideTyre : Transform;
var frontOffSideTyre : Transform;
var rearNearSideTyre : Transform;
var rearOffSideTyre : Transform;

var steer_max = 20;
var motor_max = 10;
var brake_max = 100;

private var steer = 0;
private var forward = 0;
private var back = 0;
private var motor = 0;
private var brake = 0;
private var reverse = false;
private var speed = 0;

function Start() {
rigidbody.centerOfMass = Vector3(0, -0.05, 0);
}

function FixedUpdate () {

speed = rigidbody.velocity.sqrMagnitude;
steer = Mathf.Clamp(Input.GetAxis("Horizontal"), -1, 1);
motor = Mathf.Clamp(Input.GetAxis("Vertical"), 0, 1);
back = -1 * Mathf.Clamp(Input.GetAxis("Vertical"), -1, 0);

if(speed ==0) {
if (back > 0) { reverse = true; }
if (forward > 0) { reverse = false; }
}

if (reverse) {
motor = -1 * back;
brake = forward;
} else {
motor = forward;
brake = back;
}

rearOffSideCollider.motorTorque = motor_max * motor;
rearNearSideCollider.motorTorque = motor_max * motor;
rearOffSideCollider.brakeTorque = brake_max * brake;
rearNearSideCollider.brakeTorque = brake_max * brake;

frontOffSideCollider.steerAngle = steer_max * steer;
frontNearSideCollider.steerAngle = steer_max * steer;
frontOffSideTyre.localEulerAngles.y = steer_max * steer;
frontNearSideTyre.localEulerAngles.y = steer_max * steer;

frontOffSideTyre.Rotate (0, 0, frontOffSideCollider.rpm * -6 * Time.deltaTime);
frontNearSideTyre.Rotate (0, 0, frontNearSideCollider.rpm * -6 * Time.deltaTime);
rearOffSideTyre.Rotate (0, 0, rearOffSideCollider.rpm * -6 * Time.deltaTime);
rearNearSideTyre.Rotate (0, 0, rearNearSideCollider.rpm * -6 * Time.deltaTime);

}

No comments:

Post a Comment

Note: only a member of this blog may post a comment.