public override void CollectObservations(VectorSensor sensor)
 {
     if (_lastActions != null && _simulationManager.InitComplete)
     {
         if (_nearestLot == null)
         {
             _nearestLot = _simulationManager.GetRandomEmptyParkingSlot();
         }
         Vector3 dirToTarget = (_nearestLot.transform.position - transform.position).normalized;
         sensor.AddObservation(transform.position.normalized);
         sensor.AddObservation(
             this.transform.InverseTransformPoint(_nearestLot.transform.position));
         sensor.AddObservation(
             this.transform.InverseTransformVector(_rigitBody.velocity.normalized));
         sensor.AddObservation(
             this.transform.InverseTransformDirection(dirToTarget));
         sensor.AddObservation(transform.forward);
         sensor.AddObservation(transform.right);
         // sensor.AddObservation(StepCount / MaxStep);
         float velocityAlignment = Vector3.Dot(dirToTarget, _rigitBody.velocity);
         AddReward(0.001f * velocityAlignment);
     }
     else
     {
         sensor.AddObservation(new float[18]);
     }
 }