public override void AgentAction(float[] vectorAction, string textAction)
    {
        var forward  = vectorAction[0];
        var rotation = vectorAction[1];

        switch (forward)
        {
        case 1:
            CarDriver.Accelerate(1);
            break;

        case 2:
            CarDriver.Accelerate(-1);
            break;

        default:
            CarDriver.Accelerate(0);
            CarDriver.Brake();
            break;
        }
        switch (rotation)
        {
        case 1:
            CarDriver.Steer(-1);
            break;

        case 2:
            CarDriver.Steer(1);
            break;

        default:
            CarDriver.Steer(0);
            break;
        }
        AddReward(-(1f / agentParameters.maxStep) * (Vector3.Distance(transform.position,
                                                                      TargetPoint.transform.position) /
                                                     StartDistance));
        var angle = Mathf.Abs(Vector3.Dot(transform.forward,
                                          transform.InverseTransformVector(TargetPoint.transform.position)));
        //if(angle <= 30)
        //{
        //    AddReward(0.03f);
        //}
        //else
        //{
        //    AddReward(-0.03f);
        //}
    }
        //------------------------------------------------------------------
        public void Start()
        {
            Car closest = driver.FindClosestCar(driver.Car.Lane.Cars.Where(driver.IsCarAhead));

            if (driver.Distance(closest) > driver.SafeZone.LowDanger)
            {
                driver.Accelerate(this);
            }
        }