// Use this for initialization void Start() { //Creating your Vechicle (Load section) //Download model data (or model) //Build Model,parts,paint... //Download engine,wheelbase data... //DownloadData(); //Build Wheelbase MyWheelBase = new WheelBase(); MyWheelBase.AdjustSuspension(); // GearRatio = new float[] { -3.382f, 3.321f, 1.902f, 1.308f, 1f, 0.759f }; }
// Update is called once per frame void Update() { //Obsługa //Wciskasz gaz to jedzie Throttle = Input.GetAxis("Throttle"); Clutch = Input.GetAxis("Clutch"); Steering = Input.GetAxis("Steering"); //Torque current rpm (curve value) current gear //Wykres torque dla obrotów //Zakres obrotów dla biegu i przełozenie // Throttle =0.5 wtedy dajemy 0.5 * Max torque dla tych obrotów //Torque = Throttle * wykres(rpmSilnika); //rpmSilnika na podstawie rpmKol i przełożenia aktualnego biegu //Odcinanie zapłonu / wybuch silnika(bardziej skomplikowane...) //Gaśnięcie przy zbyt niskich obrotach (samo się zrobi =>)(+ brak torque na niskich obrotach wykresu....) //Torque = differential_type = wheels //WheelsRPM zwykła średnia dla napędowych(pominiemy w ten sposób różnice między dyferencjałami różnego typu) //EngineRPM //Na podstawie WheelsRPM * GearRatio[CurrentGear]; /* * SR20DET (5 speed) * 1st: 3.321 * 2nd: 1.902 * 3rd: 1.308 * 4th: 1.000 * 5th: 0.759 * Reverse : 3.382 * Final Drive: 4.083 (S13) */ if (MyWheelBase != null && GearRatio != null && GearRatio.Length > 0) { if (Clutch > 0.9) { ClutchPressed = true; } else { ClutchPressed = false; } if (!ClutchPressed || ClutchIsSlipping) { WheelsRPM = MyWheelBase.AVGRPM(); EngineRPM = WheelsRPM * GearRatio[CurrentGear]; } else { EngineRPM = Throttle * 1000 * Time.deltaTime; } Torque = Throttle * RPM_Torque.Evaluate(EngineRPM); //Torque to Wheels trought differential MyWheelBase.ApplyTorque(Torque); if (LastSteering != Steering) { MyWheelBase.Steer(Steering); LastSteering = Steering; } MyWheelBase.AdjustSuspension(); } }