- Home /
Question by
Spacemarine658 · Sep 17, 2015 at 07:29 PM ·
controllerwheelcolliderentervehicles
Need help making only one car drive at a time
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<Rigidbody> ();
m_rigidbody.centerOfMass = centerOfMass.localPosition;
}
void Update()
{
if (Input.GetKeyDown (KeyCode.H)) {
if (((player.GetComponent<PlayerController> ().withinRange == true) || inCar == true)) {
putPlayerInCar ();
}
}
}
void putPlayerInCar()
{
inCar = !inCar;
if (inCar == true) {
GameObject.Find ("Main Camera").GetComponent<SmoothFollow> ().target = gameObject.transform;
player.GetComponent<MeshRenderer> ().enabled = false;
player.GetComponent<CapsuleCollider> ().enabled = false;
player.GetComponent<Rigidbody> ().useGravity = false;
}
else
{
player.GetComponent<PlayerController> ().moveCameraToPlayer ();
player.GetComponent<MeshRenderer> ().enabled = true;
player.GetComponent<CapsuleCollider> ().enabled = true;
player.GetComponent<Rigidbody> ().useGravity = true;
player.transform.position = (gameObject.transform.position + new Vector3(-4,1,0));
player.transform.rotation = gameObject.transform.rotation;
}
player.GetComponent<PlayerController> ().enabled = !player.GetComponent<PlayerController> ().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;
}
}
}
}
Comment
Your answer
Follow this Question
Related Questions
Wheel Script 1 Answer
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
Vehicle controller not working well 0 Answers
Wheels Are Too Much Inward 0 Answers
how do I enter vehicles 1 Answer