//Do initial setup throught Unity Start function. void Start() { controller = GetComponent<KartControllerCustom>(); SetInitialValues(); ResetAll(); }
//This function takes the current car rates from the controller, and applies modifications to them based on certain states public float[] CalculateRates(KartControllerCustom.DrivingState drivingState, float maxSpeed, float currentTurnRate, bool slowing, bool onTerrain, bool holdDrift) { float[] kartPhysicsValues = new float[2]; if(speedModded) speedModded = false; else currentSpeed = maxSpeed; switch(drivingState) { case KartControllerCustom.DrivingState.forward: if(currentTurnRate < -modifiedTurnRateAcceleration*2) currentTurnRate += modifiedTurnRateAcceleration*2; else if(currentTurnRate > modifiedTurnRateAcceleration*2) currentTurnRate -= modifiedTurnRateAcceleration*2; else currentTurnRate = 0; if(currentSpeed < modifiedStraightLineSpeed && !slowing && !onTerrain) { currentSpeed += modifiedStraightLineAcceleration; } else if(currentSpeed > modifiedStraightLineSpeed) { currentSpeed -= modifiedSlowingDeceleration; } rigidbody.drag = groundDrag; break; case KartControllerCustom.DrivingState.left: if(currentTurnRate > 0) { currentTurnRate -= modifiedTurnRateAcceleration * 6; } else if(currentTurnRate > -modifiedMaxTurnRate) { currentTurnRate -= modifiedTurnRateAcceleration; } else if(currentTurnRate < -modifiedMaxTurnRate) { currentTurnRate += modifiedTurnRateAcceleration; } else currentTurnRate = -modifiedMaxTurnRate; if(currentSpeed > modifiedStraightLineSpeed - (modifiedStraightLineSpeed - modifiedTurningSpeed ) && !onTerrain) { currentSpeed -= modifiedTurningAntiAcceleration; } else if(currentSpeed < modifiedStraightLineSpeed - (modifiedStraightLineSpeed - modifiedTurningSpeed) && !onTerrain) currentSpeed += modifiedStraightLineAcceleration; rigidbody.drag = groundDrag; break; case KartControllerCustom.DrivingState.right: if(currentTurnRate < 0) { currentTurnRate += modifiedTurnRateAcceleration * 6; } else if(currentTurnRate < modifiedMaxTurnRate) currentTurnRate += modifiedTurnRateAcceleration; else if(currentTurnRate > modifiedMaxTurnRate) currentTurnRate -= modifiedTurnRateAcceleration; else currentTurnRate = modifiedMaxTurnRate; if(currentSpeed > modifiedStraightLineSpeed - (modifiedStraightLineSpeed - modifiedTurningSpeed) && !onTerrain) { currentSpeed -= modifiedTurningAntiAcceleration; } else if( currentSpeed < modifiedStraightLineSpeed - (modifiedStraightLineSpeed - modifiedTurningSpeed) && !onTerrain) currentSpeed += modifiedStraightLineAcceleration; rigidbody.drag = groundDrag; break; case KartControllerCustom.DrivingState.driftLeft: if(!holdDrift) { if(currentTurnRate > 0) { currentTurnRate -= modifiedDrift_turnRateAcceleration * 3; } else if(currentTurnRate > -modifiedDrift_maxTurnRate) { currentTurnRate -= modifiedDrift_turnRateAcceleration; } else if(currentTurnRate < -modifiedDrift_maxTurnRate) { currentTurnRate += modifiedDrift_turnRateAcceleration; } else currentTurnRate = -modifiedDrift_maxTurnRate; if(currentSpeed > modifiedDrift_turningSpeed && !onTerrain) { currentSpeed -= modifiedDrift_turningAntiAcceleration; } else if(currentSpeed < modifiedDrift_turningSpeed && !onTerrain) currentSpeed += modifiedStraightLineAcceleration; rigidbody.drag = drift_groundDrag; } else if(holdDrift) { if(currentTurnRate > 0) { currentTurnRate -= modifiedFeatherDrift_turnRateAcceleration * 3; } else if(currentTurnRate > -modifiedFeatherDrift_maxTurnRate) { currentTurnRate -= modifiedFeatherDrift_turnRateAcceleration; } else if(currentTurnRate < -modifiedFeatherDrift_maxTurnRate) { currentTurnRate += modifiedFeatherDrift_turnRateAcceleration; } else currentTurnRate = -modifiedFeatherDrift_maxTurnRate; if(currentSpeed > modifiedFeatherDrift_turningSpeed && !onTerrain) { currentSpeed -= modifiedFeatherDrift_turningAntiAcceleration; } else if(currentSpeed < modifiedFeatherDrift_turningSpeed && !onTerrain) currentSpeed += modifiedStraightLineAcceleration; rigidbody.drag = featherDrift_groundDrag; } break; case KartControllerCustom.DrivingState.driftRight: if( !holdDrift ) { if(currentTurnRate < 0) { currentTurnRate += modifiedDrift_turnRateAcceleration *3; } else if(currentTurnRate < modifiedDrift_maxTurnRate) { currentTurnRate += modifiedDrift_turnRateAcceleration; } else if(currentTurnRate > modifiedDrift_maxTurnRate) { currentTurnRate -= modifiedDrift_turnRateAcceleration; } else currentTurnRate = modifiedDrift_maxTurnRate; if(currentSpeed > modifiedDrift_turningSpeed && !onTerrain) { currentSpeed -= modifiedDrift_turningAntiAcceleration; } else if( currentSpeed < modifiedDrift_turningSpeed && !onTerrain) currentSpeed += modifiedStraightLineAcceleration; rigidbody.drag = drift_groundDrag; } else if(holdDrift) { if(currentTurnRate < 0) { currentTurnRate += modifiedFeatherDrift_turnRateAcceleration *3; } else if(currentTurnRate < modifiedFeatherDrift_maxTurnRate) { currentTurnRate += modifiedFeatherDrift_turnRateAcceleration; } else if(currentTurnRate > modifiedFeatherDrift_maxTurnRate) { currentTurnRate -= modifiedFeatherDrift_turnRateAcceleration; } else currentTurnRate = modifiedFeatherDrift_maxTurnRate; if(currentSpeed > modifiedFeatherDrift_turningSpeed && !onTerrain) { currentSpeed -= modifiedFeatherDrift_turningAntiAcceleration; } else if( currentSpeed < modifiedFeatherDrift_turningSpeed && !onTerrain) currentSpeed += modifiedStraightLineAcceleration; rigidbody.drag = featherDrift_groundDrag; } break; case KartControllerCustom.DrivingState.stopped: currentTurnRate = 0; currentSpeed = 0f; break; case KartControllerCustom.DrivingState.finished: break; } //apply slow for braking if(slowing && currentSpeed > brakingSpeed ) currentSpeed -= brakingDeceleration; //apply slow for terrain if( onTerrain && currentSpeed > offTrackSpeed) { currentSpeed -= offTrackDeceleration; offTrackDeceleration += offTrackDecelerationRate; } else if(!onTerrain) offTrackDeceleration = offTrackDecelerationOriginal; kartPhysicsValues[0] = currentSpeed; kartPhysicsValues[1] = currentTurnRate; return kartPhysicsValues; }
//The start function finds the approprite components on the current gameobject void Start() { kartBody = gameObject.GetComponent<KartControllerCustom>().kartBody; controller = GetComponent<KartControllerCustom>(); }
//The start function finds the approprite components on the current gameobject void Start() { kartBody = gameObject.GetComponent <KartControllerCustom>().kartBody; controller = GetComponent <KartControllerCustom>(); }
//Do initial setup throught Unity Start function. void Start() { controller = GetComponent <KartControllerCustom>(); SetInitialValues(); ResetAll(); }