Синтаксис:
Используется csharp
void FixedUpdate (){
AnimateGears();
Engine();
Braking();
Inputs();
Audio();
}
void Engine(){
//Speed Limiter.
if(speed > maxSpeed){
for(int i = 0; i < AllWheelColliders.Count; i++){
AllWheelColliders[i].motorTorque = 0;
}
//Applying Motor Torque.
}else{
for(int i = 0; i < wheelColliders_L.Length; i++){
if(!reversing){
if(wheelColliders_L[i].isGrounded && Mathf.Abs(wheelColliders_L[i].rpm) < 1000)
wheelColliders_L[i].motorTorque = engineTorque * Mathf.Clamp((Mathf.Clamp(motorInput, 0f, 1f)) + Mathf.Clamp(steerInput, -1f, 1f), -1f, 1f) * engineTorqueCurve.Evaluate(speed);
else
wheelColliders_L[i].motorTorque = 0;
}else{
if(speed < 30){
wheelColliders_L[i].motorTorque = (engineTorque * motorInput);
}else{
wheelColliders_L[i].motorTorque = 0;
}
}
}
for(int i = 0; i < wheelColliders_R.Length; i++){
if(!reversing){
if(wheelColliders_R[i].isGrounded && Mathf.Abs(wheelColliders_R[i].rpm) < 1000)
wheelColliders_R[i].motorTorque = engineTorque * Mathf.Clamp((Mathf.Clamp(motorInput, 0f, 1f)) + Mathf.Clamp(-steerInput, -1f, 1f), -1f, 1f) * engineTorqueCurve.Evaluate(speed);
else
wheelColliders_R[i].motorTorque = 0;
}else{
if(speed < 30){
wheelColliders_R[i].motorTorque = (engineTorque * motorInput);
}else{
wheelColliders_R[i].motorTorque = 0;
}
}
}
}
//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);
}
}
}
}
void Braking(){
for(int i = 0; i < AllWheelColliders.Count; i++){
if(motorInput == 0){
if(speed < 25 && Mathf.Abs(steerInput) < .1f)
AllWheelColliders[i].brakeTorque = brakeTorque / 5f;
else
AllWheelColliders[i].brakeTorque = 0;
}else if(motorInput < -.1f && AllWheelColliders[0].rpm > 50){
AllWheelColliders[i].brakeTorque = brakeTorque * (Mathf.Abs(motorInput));
}else{
AllWheelColliders[i].brakeTorque = 0;
}
}
}
void Inputs(){
//Motor Input.
motorInput = Input.GetAxis("Vertical");
//Steering Input.
steerInput = Input.GetAxis("Horizontal");
//Reversing Bool.
if(motorInput < 0 && AllWheelColliders[0].rpm < 50)
reversing = true;
else reversing = false;
speed = rigid.velocity.magnitude * 3.0f;
//Acceleration Calculation.
acceleration = 0f;
acceleration = (transform.InverseTransformDirection(rigid.velocity).z - lastVelocity) / Time.fixedDeltaTime;
lastVelocity = transform.InverseTransformDirection(rigid.velocity).z;
//Drag Limit.
rigid.drag = Mathf.Clamp((acceleration / 10f), 0f, 1f);
//EngineRPM
engineRPM = Mathf.Clamp((((Mathf.Abs((wheelColliders_L[0].rpm + wheelColliders_R[0].rpm)) * 5f) + minEngineRPM)), minEngineRPM, maxEngineRPM);
}
AnimateGears();
Engine();
Braking();
Inputs();
Audio();
}
void Engine(){
//Speed Limiter.
if(speed > maxSpeed){
for(int i = 0; i < AllWheelColliders.Count; i++){
AllWheelColliders[i].motorTorque = 0;
}
//Applying Motor Torque.
}else{
for(int i = 0; i < wheelColliders_L.Length; i++){
if(!reversing){
if(wheelColliders_L[i].isGrounded && Mathf.Abs(wheelColliders_L[i].rpm) < 1000)
wheelColliders_L[i].motorTorque = engineTorque * Mathf.Clamp((Mathf.Clamp(motorInput, 0f, 1f)) + Mathf.Clamp(steerInput, -1f, 1f), -1f, 1f) * engineTorqueCurve.Evaluate(speed);
else
wheelColliders_L[i].motorTorque = 0;
}else{
if(speed < 30){
wheelColliders_L[i].motorTorque = (engineTorque * motorInput);
}else{
wheelColliders_L[i].motorTorque = 0;
}
}
}
for(int i = 0; i < wheelColliders_R.Length; i++){
if(!reversing){
if(wheelColliders_R[i].isGrounded && Mathf.Abs(wheelColliders_R[i].rpm) < 1000)
wheelColliders_R[i].motorTorque = engineTorque * Mathf.Clamp((Mathf.Clamp(motorInput, 0f, 1f)) + Mathf.Clamp(-steerInput, -1f, 1f), -1f, 1f) * engineTorqueCurve.Evaluate(speed);
else
wheelColliders_R[i].motorTorque = 0;
}else{
if(speed < 30){
wheelColliders_R[i].motorTorque = (engineTorque * motorInput);
}else{
wheelColliders_R[i].motorTorque = 0;
}
}
}
}
//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);
}
}
}
}
void Braking(){
for(int i = 0; i < AllWheelColliders.Count; i++){
if(motorInput == 0){
if(speed < 25 && Mathf.Abs(steerInput) < .1f)
AllWheelColliders[i].brakeTorque = brakeTorque / 5f;
else
AllWheelColliders[i].brakeTorque = 0;
}else if(motorInput < -.1f && AllWheelColliders[0].rpm > 50){
AllWheelColliders[i].brakeTorque = brakeTorque * (Mathf.Abs(motorInput));
}else{
AllWheelColliders[i].brakeTorque = 0;
}
}
}
void Inputs(){
//Motor Input.
motorInput = Input.GetAxis("Vertical");
//Steering Input.
steerInput = Input.GetAxis("Horizontal");
//Reversing Bool.
if(motorInput < 0 && AllWheelColliders[0].rpm < 50)
reversing = true;
else reversing = false;
speed = rigid.velocity.magnitude * 3.0f;
//Acceleration Calculation.
acceleration = 0f;
acceleration = (transform.InverseTransformDirection(rigid.velocity).z - lastVelocity) / Time.fixedDeltaTime;
lastVelocity = transform.InverseTransformDirection(rigid.velocity).z;
//Drag Limit.
rigid.drag = Mathf.Clamp((acceleration / 10f), 0f, 1f);
//EngineRPM
engineRPM = Mathf.Clamp((((Mathf.Abs((wheelColliders_L[0].rpm + wheelColliders_R[0].rpm)) * 5f) + minEngineRPM)), minEngineRPM, maxEngineRPM);
}
ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
System.ThrowHelper.ThrowArgumentOutOfRangeException (System.ExceptionArgument argument, System.ExceptionResource resource) (at <437ba245d8404784b9fbab9b439ac908>:0)
System.ThrowHelper.ThrowArgumentOutOfRangeException () (at <437ba245d8404784b9fbab9b439ac908>:0)
System.Collections.Generic.List`1[T].get_Item (System.Int32 index) (at <437ba245d8404784b9fbab9b439ac908>:0)
RTCTankController.Inputs () (at Assets/main/Physics Based Tank Controller/Scripts/RTCTankController.cs:418)
RTCTankController.FixedUpdate () (at Assets/main/Physics Based Tank Controller/Scripts/RTCTankController.cs:320)
помогите исправить ошибку появляется когда хочу поехать назад на s
прикрепил код с 314 строки по 418
и видео https://youtu.be/zrmrmyDBjU4