Wednesday, 4 October 2017

Problems for Coding UNITY

void Engine(){

Earn free bitcoin //Reversing Bool.
if(gasInput < 0  && transform.InverseTransformDirection(rigid.velocity).z < 1 && canGoReverseNow)
reversing = true;
else
reversing = false;

speed = rigid.velocity.magnitude * speedmultiplier;

//Acceleration Calculation.
acceleration = 0f;
acceleration = (transform.InverseTransformDirection(rigid.velocity).z - lastVelocity) / Time.fixedDeltaTime;
lastVelocity = transform.InverseTransformDirection(rigid.velocity).z;

//Drag Limit.

float rpm = 0f;
float wheelRPM = ((Mathf.Abs((wheelColliders_L[2].rpm * wheelColliders_L[2].radius) + (wheelColliders_R[2].rpm * wheelColliders_R[2].radius)) / 2f) / 3.25f);

if(!reversing)
rpm = Mathf.Clamp((Mathf.Lerp(minEngineRPM, maxEngineRPM, wheelRPM / maxSpeed) + minEngineRPM) * (Mathf.Clamp01(gasInput + Mathf.Abs(steerInput))), minEngineRPM, maxEngineRPM);
else
rpm = Mathf.Clamp((Mathf.Lerp(minEngineRPM, maxEngineRPM, wheelRPM / maxSpeed) + minEngineRPM) * (Mathf.Clamp01(brakeInput + Mathf.Abs(steerInput))), minEngineRPM, maxEngineRPM);

engineRPM = Mathf.Lerp(engineRPM, (rpm + UnityEngine.Random.Range(-50f, 50f)) * fuelInput, Time.deltaTime * 2f);

if(!engineRunning)
fuelInput = 0;
else
fuelInput = fuelInputMultiplier;

//Auto Reverse Bool.
if(autoReverse){
canGoReverseNow = true;
}else{
if(brakeInput > .1f && speed < 5)
reverseDelay += Time.deltaTime;
else if(brakeInput > 0 && transform.InverseTransformDirection(rigid.velocity).z > 1f)
reverseDelay = 0f;
}

if(reverseDelay >= .75f)
canGoReverseNow = true;
else
canGoReverseNow = false;


for(int i = 0; i < wheelColliders_L.Length; i++){

ApplyMotorTorque(wheelColliders_L[i], engineTorque, true);
wheelColliders_L[i].wheelDampingRate = Mathf.Lerp(100f, 0f, gasInput);

}

for(int i = 0; i < wheelColliders_R.Length; i++){

ApplyMotorTorque(wheelColliders_R[i], engineTorque, false);
wheelColliders_R[i].wheelDampingRate = Mathf.Lerp(100f, 0f, gasInput);

}

//Steering.
if(!reversing){
if(wheelColliders_L[2].isGrounded || wheelColliders_R[2].isGrounded){
if(Mathf.Abs(rigid.angularVelocity.y) < 1f){
rigid.AddRelativeTorque((Vector3.up * steerInput) * steerTorque, ForceMode.Acceleration);
}
}
}else{
if(wheelColliders_L[2].isGrounded || wheelColliders_R[2].isGrounded){
if(Mathf.Abs(rigid.angularVelocity.y) < 1f){
rigid.AddRelativeTorque((-Vector3.up * steerInput) * steerTorque, ForceMode.Acceleration);
}
}
}

}

public void ApplyMotorTorque(WheelCollider wc, float torque, bool leftSide){

WheelHit hit;
wc.GetGroundHit(out hit);

if(Mathf.Abs(hit.forwardSlip) > 1f)
torque = 0;

if(speed > maxSpeed || Mathf.Abs(wc.rpm) > 1000 || Mathf.Abs(wc.rpm) > 1000 || !engineRunning)
torque = 0;

if(reversing && speed > 55)
torque = 0;

if(!engineRunning || !wc.isGrounded)
torque = 0;

if(!reversing){
if(leftSide)
wc.motorTorque = torque * Mathf.Clamp((Mathf.Clamp(gasInput * fuelInput, 0f, 1f)) + Mathf.Clamp(steerInput, -1f, 1f), -1f, 1f) * engineTorqueCurve.Evaluate(speed);
else
wc.motorTorque = torque * Mathf.Clamp((Mathf.Clamp(gasInput * fuelInput, 0f, 1f)) + Mathf.Clamp(-steerInput, -1f, 1f), -1f, 1f) * engineTorqueCurve.Evaluate(speed);
}else{
wc.motorTorque =  (-torque) * brakeInput;
}

}

public void ApplyBrakeTorque(WheelCollider wc, float brake){

wc.brakeTorque = brake;

}

public void Braking (){

for(int i = 0; i < allWheelColliders.Count; i++){

if(brakeInput > .1f && !reversing){
ApplyBrakeTorque(allWheelColliders[i], brakeTorque * (brakeInput));
}else if(brakeInput > .1f && reversing){
ApplyBrakeTorque(allWheelColliders[i], 0f);
}else if(gasInput < .1f && Mathf.Abs(steerInput) < .1f){
ApplyBrakeTorque(allWheelColliders[i], 10f);
}else{
ApplyBrakeTorque(allWheelColliders[i], 0f);
}

}

}

void Inputs(){

if(!canControl){
gasInput = 0;
brakeInput = 0;
steerInput = 0;
return;
}

//Motor Input.
gasInput = Input.GetAxis("Vertical") * gasInputMultiplier;

//Brake Input
brakeInput = -Mathf.Clamp(gasInput, -1f, 0f);

//Steering Input.
steerInput = Input.GetAxis("Horizontal");

}

public void Sounds(){

//Engine Audio Volume.
if(engineRunningAudioClip){

if(!reversing)
engineRunningAudio.volume = Mathf.Lerp (engineRunningAudio.volume, Mathf.Clamp (Mathf.Clamp01(gasInput + Mathf.Abs(steerInput / 2f)), minEngineSoundVolume, maxEngineSoundVolume), Time.deltaTime * 10f);
else
engineRunningAudio.volume = Mathf.Lerp (engineRunningAudio.volume, Mathf.Clamp (brakeInput, minEngineSoundVolume, maxEngineSoundVolume), Time.deltaTime * 10f);

if(engineRunning)
engineRunningAudio.pitch = Mathf.Lerp (engineRunningAudio.pitch, Mathf.Lerp (minEngineSoundPitch, maxEngineSoundPitch, (engineRPM) / (maxEngineRPM)), Time.deltaTime * 10f);
else
engineRunningAudio.pitch = Mathf.Lerp (engineRunningAudio.pitch, 0, Time.deltaTime * 10f);

}

if(engineIdleAudioClip){

if(!reversing)
engineIdleAudio.volume = Mathf.Lerp (engineIdleAudio.volume, Mathf.Clamp ((1 + (-gasInput)), minEngineSoundVolume, 1f), Time.deltaTime * 10f);
else
engineIdleAudio.volume = Mathf.Lerp (engineIdleAudio.volume, Mathf.Clamp ((1 + (-brakeInput)), minEngineSoundVolume, 1f), Time.deltaTime * 10f);

if(engineRunning)
engineIdleAudio.pitch = Mathf.Lerp (engineIdleAudio.pitch, Mathf.Lerp (minEngineSoundPitch, maxEngineSoundPitch, (engineRPM) / (maxEngineRPM)), Time.deltaTime * 10f);
else
engineIdleAudio.pitch = Mathf.Lerp (engineIdleAudio.pitch, 0, Time.deltaTime * 10f);

}

if(!reversing)
brakeAudio.volume = Mathf.Lerp (0f, maxBrakeSoundVolume, Mathf.Clamp01(brakeInput) * Mathf.Lerp(0f, 1f, wheelColliders_L[2].rpm / 50f));
else
brakeAudio.volume = 0f;

}

No comments:

Post a Comment