- Home /
Need help with controller script.
I am trying to work on a more simple car script for a place holder in my project.
The concept is simple, while W is held down, then curSpeed++ until it reaches the maxSpeed. while curSpeed is greater than 0 it will addforce(value being curSpeed) to the rigidbody making it move forward. Now that works great and suprisingly enough its more realistic than I had thought it would be lol. But now stoping the vehicle is the issue. I press SPACE and it stops the accelerator and makes curSpeed-- but its not seeming to work. I am probably making a simple mistake but a set of more experienced eyes would be appreciated. Here is what I have so far.
using UnityEngine;
using System.Collections;
public class CarController : MonoBehaviour {
public int fuel;
public int maxFuel;
public float curSpeed;
public float maxSpeed;
public float accelRate;
// Use this for initialization
void Start ()
{
fuel = maxFuel;
}
// Update is called once per frame
void Update ()
{
Bounds();
if (fuel > 0)
{
if (Input.GetKey(KeyCode.W))
{
print("Accelerating.");
curSpeed++;
rigidbody.AddForce(0,0,curSpeed);
}
if (Input.GetKey(KeyCode.Space))
{
print("E-Brake Applied.");
curSpeed--;
//I know something else needs to go here I just can't think of what.
}
}
}
public void Bounds()
{
//I know mathF.Clamp idk why I am using it this way.
if (curSpeed >= maxSpeed)
{
curSpeed = maxSpeed;
}
if (curSpeed <= 0)
{
curSpeed =0;
}
if (fuel >= maxFuel)
{
fuel = maxFuel;
}
}
}
Answer by Chris_Dlala · May 26, 2014 at 06:08 PM
Hi, you could apply force in the opposite direction when space is pressed:
rigidbody.AddForce(0,0, -brakingForce);
But of course this will eventually start a backward/reverse movement. To avoid this you may want to only apply this force if the rigidbody's velocity is between certain limits. You may also want to move the braking code outside of the fuel check, wouldn't want to run out of braking whilst driving =P I hope that helps =)