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);
    }