I am making an open world game and a want the ability for the player to get in a random vehicle and only that one to drive but currently they all drive lol
using UnityEngine;
using System.Collections;
public class VehicleController : MonoBehaviour
{
public float maxTorque = 1000f;
GameObject player;
public Transform centerOfMass;
public WheelCollider[] wheelColliders = new WheelCollider[4];
private Rigidbody m_rigidbody;
public bool inCar = false;
public bool driving = false;
void Start()
{
player = GameObject.Find ("Player");
m_rigidbody = gameObject.GetComponent ();
m_rigidbody.centerOfMass = centerOfMass.localPosition;
}
void Update()
{
if (Input.GetKeyDown (KeyCode.H)) {
if (((player.GetComponent ().withinRange == true) || inCar == true)) {
putPlayerInCar ();
}
}
}
void putPlayerInCar()
{
inCar = !inCar;
if (inCar == true) {
GameObject.Find ("Main Camera").GetComponent ().target = gameObject.transform;
player.GetComponent ().enabled = false;
player.GetComponent ().enabled = false;
player.GetComponent ().useGravity = false;
}
else
{
player.GetComponent ().moveCameraToPlayer ();
player.GetComponent ().enabled = true;
player.GetComponent ().enabled = true;
player.GetComponent ().useGravity = true;
player.transform.position = (gameObject.transform.position + new Vector3(-4,1,0));
player.transform.rotation = gameObject.transform.rotation;
}
player.GetComponent ().enabled = !player.GetComponent ().enabled;
}
void FixedUpdate()
{
if (inCar == true)
{
float steer = Input.GetAxis ("Horizontal");
float accelerate = Input.GetAxis ("Vertical");
float finalAngle = steer * 45f;
wheelColliders [0].steerAngle = finalAngle;
wheelColliders [1].steerAngle = finalAngle;
if ((accelerate == 0) && (wheelColliders [0].rpm > 0 || wheelColliders [0].rpm < 0) && Input.GetKey (KeyCode.Space)) {
wheelColliders [0].brakeTorque = maxTorque * 2;
wheelColliders [1].brakeTorque = maxTorque * 2;
wheelColliders [2].brakeTorque = maxTorque * 2;
wheelColliders [3].brakeTorque = maxTorque * 2;
} else if (accelerate == 0 && (wheelColliders [0].rpm > 0 || wheelColliders [0].rpm < 0)) {
wheelColliders [0].brakeTorque = maxTorque / 2;
wheelColliders [1].brakeTorque = maxTorque / 2;
wheelColliders [2].brakeTorque = maxTorque / 2;
wheelColliders [3].brakeTorque = maxTorque / 2;
} else {
wheelColliders [0].brakeTorque = 0;
wheelColliders [1].brakeTorque = 0;
wheelColliders [2].brakeTorque = 0;
wheelColliders [3].brakeTorque = 0;
}
for (int i = 0; i < 4; i++) {
wheelColliders [i].motorTorque = accelerate * maxTorque;
}
}
}
}
↧