public void initHumanCar(IRDSCarControllerAI aCar) { if(carCamera==null) { carCamera = GameObject.Find ("Main_Camera").GetComponent<IRDSCarCamera> ();; if(GameObject.Find("RaceStartCamera")!=null) { carCamera.GetComponent<Camera>().enabled = false; raceStartCamera = GameObject.Find ("RaceStartCamera").GetComponent<Camera>();; } } RacingAI thisCarsAI = aCar.GetComponent<RacingAI>(); thisCarsAI.aiInput = aCar.GetComponent<IRDSCarControllInput>(); racingAIs.Add(thisCarsAI); if(selectedCar==null) { selectedCar = thisCarsAI; selectedCar.aiInput = selectedCar.GetComponent<IRDSCarControllInput>(); selectedCar.aiCar.onRaceStart += onStartedRace; carCamera.changeTarget(selectedCar.aiInput.GetInstanceID()); } if(racingAIs.Count==2) { changeCar(); } if(carInterface==null) { carInterface = GameObject.Find("IndividualRaceInterface").GetComponent<IndividualCarInterfaceManager>(); } carInterface.targetAI = selectedCar; }
public SectorTimeTriplet (IRDSCarControllerAI aCar,RacingAI aCustomAI) { car = aCar; customAI = aCustomAI; lapNumber = aCar.GetLap(); time = aCar.GetCurrentLapTime(); timeString = aCar.GetCurrentLapTimeString(); totalTime = aCar.GetCurrentTotalRaceTime(); }
void Start () { text = GetComponent<TextMesh>(); AI = transform.root.GetComponent<IRDSCarControllerAI>(); thisTransform = transform; if (useMainCamera) cam = Camera.main; else cam = cameraToUse; camTransform = cam.transform; if (AI != null) text.text = AI.GetDriverName(); if (!enableForPlayerCar && IRDSStatistics.GetCurrentCar() && IRDSStatistics.GetCurrentCar() == AI){ GetComponent<Renderer>().enabled = false; } }
public void initCar() { GameObject g = this.gameObject; aiCar = g.GetComponent<IRDSCarControllerAI>(); aiDriveTrain = g.GetComponent<IRDSDrivetrain>(); if(g==null||aiDriveTrain==null) { return; } aiDriveTrain.useNitro = true; aiDriveTrain.nitroBoostDurability = 5; aiDriveTrain.nitroFuel = 0; aiInput = g.GetComponent<IRDSCarControllInput>(); if(aiInput!=null&&aiInput.GetCarDamage()!=null) { aero = g.GetComponent<IRDSAerodynamicResistance>(); wings = g.GetComponentsInChildren<IRDSWing>(); frontWingDownforce = wings[0].GetLiftCoefficient(); rearWingDownforce = wings[1].GetLiftCoefficient(); this.wheelInfo = new WheelInfo[wheels.Length]; for(int i = 0;i<wheelInfo.Length;i++) { wheelInfo[i] = new WheelInfo(wheels[i],this.carRef,i<2); } driverName = this.aiCar.GetDriverName(); //wings[0].SetLiftCoefficient(-0.3f); //wings[1].SetLiftCoefficient(-0.8f); originalSpeedCorner = aiCar.GetCorneringSpeedFactor(); inNitroZone = false; this.aiInput.GetCarDamage().SetRepairDelta(0f); this.originalPower = this.aiDriveTrain.GetMaxPower(); this.originalTorque = this.aiDriveTrain.GetMaxTorque(); } return; }
public void applyPartToCar(IRDSDrivetrain aDriveTrain,IRDSCarControllerAI aAI,RacingAI aRacingAI) { for(int i = 0;i<activeLevel;i++) { aDriveTrain.SetTurboPSI(aDriveTrain.GetTurboAirPresure()+researchRow._effectonturbopsi); float hpToKW = 745.699872f; aDriveTrain.SetMaxPower(aDriveTrain.GetOriginalPower()+researchRow._effectonhp*hpToKW); aDriveTrain.SetMaxTorque(aDriveTrain.GetMaxTorque()+researchRow._effectontorque); aRacingAI.nitrosRemaining += (byte) researchRow._effectonnitrocapacity; aDriveTrain.ShiftSpeed += researchRow._effectonshiftspeed; if(aDriveTrain.ShiftSpeed<0) { aDriveTrain.ShiftSpeed = 0.01f; } IRDSAerodynamicResistance ar = aDriveTrain.gameObject.GetComponent<IRDSAerodynamicResistance>(); Vector3 coefficients = ar.GetCoefficients(); coefficients.z -= researchRow._bodyaerodragreduce; if(coefficients.z<0.001f) { coefficients.z = 0.001f; } ar.SetCoefficients(coefficients); aAI.SetHumanError(aAI.GetHumanError()-researchRow._humanerrorreductor); aRacingAI.engineTempMonitor.engineBlowupTemp += researchRow._coolingmaxtempeffect; aRacingAI.engineTempMonitor.baseCooling += researchRow._coolingbaseeffect; if(float.IsNaN(aRacingAI.engineTempMonitor.baseCooling)||float.IsNaN(aRacingAI.engineTempMonitor.engineBlowupTemp)) { Debug.Log ("STOP!"); } /* IRDSWheel[] wheels = aRacingAI.wheels; for(int c = 0;c<wheels.Length;c++) { wheels[c].SetGrip(wheels[c].GetGrip()+researchRow._tirecoefficientofgripchange); }*/ aRacingAI.nitroFerocity += researchRow._effectonnitrodurability; aRacingAI.nitroFuel += researchRow._effectonnitrofuel; } }
public void Update(IRDSDrivetrain aDriveTrain,IRDSCarControllerAI aCarController,IRDSCarControllInput aInput,RacingAI aAI) { // First, we add the heat from the current RPM if(aDriveTrain==null) { return; } float currentRPM = aDriveTrain.GetRPM(); float originalMinRPM = aDriveTrain.GetOriginalMinRPM(); if(!float.IsNaN(currentRPM)) { float tempToAdd = (((float) Math.Pow(currentRPM/(aDriveTrain.revLimiterRPM-originalMinRPM),5))/15f)/2; currentTemperature += tempToAdd; // Just for montioring in Unity IDE lastHeat = tempToAdd; lastRPMPercent = aDriveTrain.GetRPM()/aDriveTrain.revLimiterRPM; } // Is the cars cooler "on" (yes if temperature is above perfect temperature)? if(currentTemperature>perfectTemperature) { // The faster we're going, the more cooling, car coolers + we get the base cooling amount float currentSpeed = aInput.GetCarSpeed(); if(currentSpeed>maxCoolingSpeed) { currentSpeed = maxCoolingSpeed; } float tempToTake = (((float) Math.Pow(currentSpeed/maxCoolingSpeed,4))/8f+this.baseCooling)/2; currentTemperature -= tempToTake; lastCool = tempToTake; } percentTempRange= (currentTemperature-perfectTemperature)/(engineBlowupTemp-perfectTemperature); if(percentTempRange>maxTempPercent) { // Just for monitoring in Unity IDE maxTempPercent = percentTempRange; } if(hasFailed) { return; } if(percentTempRange<0.70f) { if(aAI.engineFailure!=EEngineFailureStage.Normal) { aAI.engineFailure = EEngineFailureStage.Normal; aAI.setEngineFailureStage(); this.isTooHot = false; this.isOverheating = false; this.isGettingHot = false; } } else if(percentTempRange<0.85f) { if(aAI.engineFailure!=EEngineFailureStage.Hot) { aAI.engineFailure = EEngineFailureStage.Hot; aAI.setEngineFailureStage(); this.isGettingHot = true; this.isTooHot = false; this.isOverheating = false; } } else if(percentTempRange<1f) { if(aAI.engineFailure!=EEngineFailureStage.VeryHot) { aAI.engineFailure = EEngineFailureStage.VeryHot; aAI.setEngineFailureStage(); this.isGettingHot = false; this.isTooHot = false; this.isOverheating = true; } } else { if(aAI.engineFailure!=EEngineFailureStage.Failed) { hasFailed = true; aAI.engineFailure = EEngineFailureStage.Failed; aAI.setEngineFailureStage(); this.isGettingHot = false; this.isTooHot = true; this.isOverheating = true; } } }
public void applyResearchToCar(IRDSDrivetrain aDriveTrain,IRDSCarControllerAI aAI,RacingAI aRacingAI) { for(int i = 0;i<this.rndParts.Count;i++) { rndParts[i].applyPartToCar(aDriveTrain,aAI,aRacingAI); } }
public void initLibraryValues(IRDSDrivetrain aDriveTrain,IRDSCarControllerAI aAI,RacingAI aRacingAI) { float hpToKW = 745.699872f; aDriveTrain.SetMaxPower(carHP*hpToKW); aDriveTrain.SetPowerRPM(this.carLibRecord.carHPRPM); aDriveTrain.SetMaxTorque(this.carTorque); aDriveTrain.SetTorqueRPM(this.carLibRecord.carTorqueRPM); aDriveTrain.ShiftSpeed = this.shiftSpeed; aAI.spdLimit = (float) this.carMaxSpeed; aRacingAI.nitrosRemaining = (byte) this.nitroCapacity; // aDriveTrain.SetEngineOrientation(Vector3.up); }
// Use this for initialization void Start () { car = GetComponent<IRDSCarControllerAI>(); car.onRaceEnd = OnRaceEnd; }