Need help fixing a java script
Hey guys, I'm basically new with scripting and I have a scripting problem that a I cannot solve in my java script. What I'm trying to do is to create a car simulation, there is still a lot that I will add to the script in the future to make it more realistic. Also, there is a tiny part of a commentary section that I plan to use with a steering wheel rather than the keyboard as my input.
Here is the code:
#pragma strict
var WheelLFCollider : WheelCollider;
var WheelRFCollider : WheelCollider;
var WheelLRCollider : WheelCollider;
var WheelRRCollider : WheelCollider;
var WheelLF : Transform;
var WheelRF : Transform;
var WheelLR : Transform;
var WheelRR : Transform;
var lowestSteerAtSpeed : float = 50;
var lowSpeedSteerAngle : float = 10;
var highSpeedSteerAngle : float = 1;
var decelerationSpeed : float = 30;
var maxTorque : float = 50;
var currentSpeed : float;
var topSpeed : float = 150;
var rb: Rigidbody;
function Start () {
rb = GetComponent.<Rigidbody>() ;
}
function FixedUpdate () {
Controle ();
}
function Update() {
WheelLF.Rotate(WheelLFCollider.rpm/60*360*Time.deltaTime,0,0);
WheelRF.Rotate(WheelRFCollider.rpm/60*360*Time.deltaTime,0,0);
WheelLR.Rotate(WheelLRCollider.rpm/60*360*Time.deltaTime,0,0);
WheelRR.Rotate(WheelRRCollider.rpm/60*360*Time.deltaTime,0,0);
WheelLF.localEulerAngles.y = WheelLFCollider.steerAngle - WheelLF.localEulerAngles.z;
WheelRF.localEulerAngles.y = WheelRFCollider.steerAngle - WheelRF.localEulerAngles.z;
}
function Controle () {
//var Accel = Input.GetAxisRaw("Accelerator") ;
//Debug.Log(Accel);
currentSpeed = 2*22/7*WheelLRCollider.radius*WheelLRCollider.rpm*60/1000;
currentSpeed = Mathf.Round(currentSpeed);
if (currentSpeed < topSpeed) {
WheelRRCollider.motorTorque = maxTorque * Input.GetAxis("Vertcial");
WheelLRCollider.motorTorque = maxTorque * Input.GetAxis("Vertical");
}
else {
WheelRRCollider.motorTorque = 0;
WheelLRCollider.motorTorque = 0;
}
if (Input.GetButton("Vertical")==false) {
WheelRRCollider.brakeTorque = decelerationSpeed;
WheelLRCollider.brakeTorque = decelerationSpeed;
}
else{
WheelRRCollider.brakeTorque = 0;
WheelLRCollider.brakeTorque = 0;
}
if (Input.GetAxis("Vertical")){
rb.velocity = Vector3(50,0,0);
}
var speedFactor = GetComponent<Rigidbody(rb.velocity.magnitude/lowestSteerAtSpeed);
var currentSteerAngle = Mathf.Lerp(lowSpeedSteerAngle,highSpeedSteerAngle,speedFactor);
currentSteerAngle *= Input.GetAxis("Horizontal");
WheelLFCollider.steerAngle = currentSteerAngle;
WheelRFCollider.steerAngle = currentSteerAngle;
}
pragma strict
ar WheelLFCollider : WheelCollider; var WheelRFCollider : WheelCollider; var WheelLRCollider : WheelCollider; var WheelRRCollider : WheelCollider; var WheelLF : Transform; var WheelRF : Transform; var WheelLR : Transform; var WheelRR : Transform; var lowestSteerAtSpeed : float = 50; var lowSpeedSteerAngle : float = 10; var highSpeedSteerAngle : float = 1; var decelerationSpeed : float = 30; var maxTorque : float = 50; var currentSpeed : float; var topSpeed : float = 150; var rb: Rigidbody;
function Start () { rb = GetComponent.() ; }
function FixedUpdate () { Controle (); }
function Update() { WheelLF.Rotate(WheelLFCollider.rpm/60*360*Time.deltaTime,0,0); WheelRF.Rotate(WheelRFCollider.rpm/60*360*Time.deltaTime,0,0); WheelLR.Rotate(WheelLRCollider.rpm/60*360*Time.deltaTime,0,0); WheelRR.Rotate(WheelRRCollider.rpm/60*360*Time.deltaTime,0,0); WheelLF.localEulerAngles.y = WheelLFCollider.steerAngle - WheelLF.localEulerAngles.z; WheelRF.localEulerAngles.y = WheelRFCollider.steerAngle - WheelRF.localEulerAngles.z; }
function Controle () { //var Accel = Input.GetAxisRaw("Accelerator") ; //Debug.Log(Accel); currentSpeed = 2*22/7*WheelLRCollider.radius*WheelLRCollider.rpm*60/1000; currentSpeed = $$anonymous$$athf.Round(currentSpeed);
if (currentSpeed < topSpeed) { WheelRRCollider.motorTorque = maxTorque Input.GetAxis("Vertcial"); WheelLRCollider.motorTorque = maxTorque Input.GetAxis("Vertical"); }
else { WheelRRCollider.motorTorque = 0; WheelLRCollider.motorTorque = 0; }
if (Input.GetButton("Vertical")==false) { WheelRRCollider.brakeTorque = decelerationSpeed; WheelLRCollider.brakeTorque = decelerationSpeed; }
else{ WheelRRCollider.brakeTorque = 0; WheelLRCollider.brakeTorque = 0; }
if (Input.GetAxis("Vertical")){ rb.velocity = Vector3(50,0,0); }
var speedFactor = GetComponent
There's a "Code Sample" button while creating a post (the zeros and ones). Use this. It provides code highlighting. Please edit your original question with this changes.
I'm sorry about that, here is on of the problems Unity detected:
Assets/Scripts/Carmovement.js(66,41): BCE0024: The type 'UnityEngine.Rigidbody' does not have a visible constructor that matches the argument list '(float)'.
Answer by Zodiarc · Nov 04, 2016 at 01:08 PM
Line 66 is wrong. Change it to
var speedFactor = rb.velocity.magnitude/lowestSteerAtSpeed;
Zodiarc thanks a lot! Now I don't have compiler errors.
Your answer
Follow this Question
Related Questions
Figuring out what the acceleration will be before applying force to RigidBody2D 0 Answers
Using rb.velocity causes low gravity. 2 Answers
Bullet not inheriting speed of player. 0 Answers
C# keep previous velocity while jumping, previous solutions not working 0 Answers
Modifying mass of all objects 1 Answer