2015-02-02 3 views
0

이 버그의 원인을 이해하지 못했습니다. 누구든지 도와 줄 수 있습니까? IndexOutOfRangeException : 배열 인덱스가 범위를 벗어났습니다

IndexOutOfRangeException: Array index is out of range. (at Assets/Scripts/PlayerCar.js:73) CompareApproximately (det, 1.0F, .005f) UnityEditor.DockArea:OnGUI()

내 코드 : ShiftGears 함수의 마지막 if 문에서

var GearRatio : float [ ]; 
var CurrentGear :int= 1; 
var EngineTorque:float=230.0; 
var MaxEngineRPM:float=3000; 
var MinEngineRPM:float=1000; 
private var EngineRPM: float = 0.0; 

function Start() { 
     rigidbody.centerOfMass += Vector3(0, -1f, 0.25f); 
} 
function Update() { 
     EngineRPM =(FrontLeftWhell.rpm + FrontRightWhell.rpm)/2 * GearRatio[CurrentGear]; 
     ShiftGears(); 

     FrontLeftWhell.motorTorque = (EngineTorque /GearRatio[CurrentGear]) * motorInputTouch; 
     FrontRightWhell.motorTorque = (EngineTorque /GearRatio[CurrentGear]) * motorInputTouch;   
} 

function ShiftGears(){ 

     if(EngineRPM>=MaxEngineRPM){ 
     var AppropriateGear: int =CurrentGear; 
     for (var i=0;i<GearRatio.length;i++){ 
       if(FrontLeftWhell.rpm * GearRatio[i]>MaxEngineRPM){ 
        AppropriateGear=i; 
        break; 
       } 
      } 
     CurrentGear=AppropriateGear; 
} 

if(EngineRPM <=MinEngineRPM){ 
    AppropriateGear=CurrentGear; 
    for (var j=0;j<GearRatio.length;j++){ 
     if(FrontLeftWhell.rpm * GearRatio[i]>MinEngineRPM){ 
      AppropriateGear=j; 
      break; 
     } 
    } 
    CurrentGear=AppropriateGear; 
} 
+0

잠깐, 유니티트인가요? – Bergi

+0

이 줄'if (FrontLeftWhell.rpm * GearRatio [Min] MinEngineRPM) {'끝 부분에'[i]'대신'[j]'가 있어야합니까? – Paul

+1

예, 많은 방법을 시도했지만 솔루션을 찾을 수 있습니다. ( –

답변

0

봐 :

if(FrontLeftWhell.rpm * GearRatio[i]>MinEngineRPM){ 

현재 인덱스로 j를 사용하여 귀하의 루프하지만, GearRatio 배열에 액세스하려면 i을 사용하고 있습니다. 대신 j을 사용하십시오.

제가 생각
+1

아니요 , 아직도 계속 :( –

1

이 문제는이 라인

EngineRPM = (FrontLeftWhell.rpm FrontRightWhell.rpm +)/2 * GearRatio [CurrentGear];

FrontLeftWhell.motorTorque = (EngineTorque /GearRatio[CurrentGear]) * motorInputTouch; 
    FrontRightWhell.motorTorque = (EngineTorque /GearRatio[CurrentGear]) * motorInputTouch; 
관련 문제