void FixedUpdate() { if (canControl) { //car speed in KM/H speed = playerBody.velocity.magnitude * 3.6f; localVel = playerBody.transform.InverseTransformDirection(playerBody.velocity); if (XCI.GetButton(XboxButton.A, controller) && tempBoostTimer > 0 && isAlive) { isBoosting = true; if (!mainSource2.isPlaying) { mainSource2.clip = boostSound; mainSource2.loop = true; mainSource2.volume = 0.4f; mainSource2.Play(); } tempBoostTimer -= Time.deltaTime; boostEffect.SetActive(true); cameraShake.BoostShake(boostShake); tempMaxSpeed = boostSpeed; if (speed < tempMaxSpeed) { playerBody.AddRelativeForce(Vector3.forward * boostPower, ForceMode.Force); } } else { if (isBoosting) { cameraShake.StopBoostShake(); } if (mainSource2.isPlaying) { mainSource2.loop = false; mainSource2.volume = 0f; mainSource2.Stop(); } isBoosting = false; tempMaxSpeed = maxSpeed; boostEffect.SetActive(false); if (tempBoostTimer < boostTimer) { tempBoostTimer += Time.deltaTime / 4; } } if (XCI.GetAxis(XboxAxis.RightTrigger, controller) != 0 && isAlive || XCI.GetAxis(XboxAxis.LeftTrigger, controller) != 0 && isAlive) { if (speed > tempMaxSpeed) { power = 0; reverse = 0; } else { power = XCI.GetAxis(XboxAxis.RightTrigger, controller) * (enginePower * speedMultiplier) * Time.fixedDeltaTime; reverse = XCI.GetAxis(XboxAxis.LeftTrigger, controller) * (enginePower * speedMultiplier) * Time.fixedDeltaTime; } } //Allows for turning and drift Turning(); //Allows the players movement if they are still alive if ((XCI.GetAxis(XboxAxis.LeftTrigger, controller) > 0) && (XCI.GetAxis(XboxAxis.RightTrigger, controller) > 0) && isAlive) { if (!isBoosting) { Break(breakPower); } else { return; } } else if (XCI.GetAxis(XboxAxis.RightTrigger, controller) > 0 && isAlive) { if (localVel.z < -0.01f) { Break(breakPower); } else { Accelerate(); } } else if (XCI.GetAxis(XboxAxis.LeftTrigger, controller) > 0 && isAlive && !isBoosting) { if (localVel.z > 0.01f) { Break(breakPower); } else { Reverse(); } } else { if (isGrounded) { if (localVel.z > 7f || localVel.z < -7f) { playerBody.drag = declDrag / 2; } else if (localVel.z > 4f || localVel.z < -4f) { playerBody.drag = declDrag; } else { playerBody.drag = declDrag * 2; } } else { playerBody.drag = 0; } wheelColliders[0].motorTorque = 0; wheelColliders[1].motorTorque = 0; wheelColliders[2].motorTorque = 0; wheelColliders[3].motorTorque = 0; } //move wheel visuals WheelRotation(); //Jump(); LightTrails(); } else { wheelColliders[0].steerAngle = 0; wheelColliders[1].steerAngle = 0; wheelColliders[2].steerAngle = 0; wheelColliders[3].steerAngle = 0; wheelColliders[0].steerAngle = 0; Break(breakPower); isBoosting = false; tempMaxSpeed = maxSpeed; boostEffect.SetActive(false); cameraShake.StopBoostShake(); if (tempBoostTimer < boostTimer) { tempBoostTimer = boostTimer; } } if (deathTimerStart) { deathTimer += Time.fixedDeltaTime; } if (deathTimer >= 0.5f) { explosion.SetActive(false); explosionSphere.gameObject.SetActive(false); deathTimerStart = false; deathTimer = 0.0f; } }