void Update() { if (death) { return; } movementX = Input.GetAxis(HORIZONTAL) * rotationSpeed; if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow)) { movementZ += power; if (movementZ > 0) { movementZ = Mathf.Clamp(movementZ, 0, speed); } else if (movementZ < 0) { movementZ = Mathf.Clamp(movementZ, -speedBackwards, 0); } if (movementZ < speed / 3) { if (OnBurnout != null) { OnBurnout(); } if (OnSlip != null) { OnSlip(); } } else { if (movementZ > speed / 1.5f) { if (movementX >= rotationSpeed / 2f || movementX <= -(rotationSpeed / 2f)) { if (movementX >= rotationSpeed / 1.1f || movementX <= -(rotationSpeed / 1.1f)) { if (OnBurnout != null) { OnBurnout(); } if (OnSlip != null) { OnSlip(); } } else { if (OnSlip != null) { OnSlip(); } } } else { if (OnStopSlip != null) { OnStopSlip(); } if (OnStopBurnout != null) { OnStopBurnout(); } } } else { if (OnStopSlip != null) { OnStopSlip(); } if (OnStopBurnout != null) { OnStopBurnout(); } } } } else if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow)) { if (OnSlip != null) { OnSlip(); } if (movementZ > 0) { movementZ -= breaks; movementZ = Mathf.Clamp(movementZ, 0, speed); } else if (movementZ < 0) { movementZ -= power * 2; movementZ = Mathf.Clamp(movementZ, -speedBackwards, 0); } else { movementZ -= power * 2; } } else { if (movementZ > 0) { movementZ = Mathf.Clamp(movementZ, 0, speed); movementZ -= power / 1.001f; } else if (movementZ < 0) { movementZ += power / 1.5f; movementZ = Mathf.Clamp(movementZ, -speedBackwards, 0); } if (OnStopBurnout != null) { OnStopBurnout(); } if (movementZ > speed / 2) { if (movementX >= rotationSpeed / 2f || movementX <= -(rotationSpeed / 2f)) { if (movementX >= rotationSpeed / 1.3f || movementX <= -(rotationSpeed / 1.3f)) { if (OnBurnout != null) { OnBurnout(); } if (OnSlip != null) { OnSlip(); } } else { if (OnSlip != null) { OnSlip(); } } } else { if (OnStopSlip != null) { OnStopSlip(); } if (OnStopBurnout != null) { OnStopBurnout(); } } } else { if (OnStopSlip != null) { OnStopSlip(); } if (OnStopBurnout != null) { OnStopBurnout(); } } } if (movementZ != 0) { transform.Rotate(0, movementX * Time.deltaTime, 0); } Vector3 direction = new Vector3(transform.forward.x * movementZ, transform.forward.y * movementZ, transform.forward.z * movementZ); _body.velocity = direction + attractor.Gravity(transform); }