public IEnumerator MoveToPosition(vIControlAI controlAI)
            {
                lastTargetDirection = controlAI.transform.forward;
                onStartMove.Invoke();
                controlAI.SetSpeed(speed);
                controlAI.MoveTo(target.position);
                controlAI.ForceUpdatePath(2f);
                yield return(new WaitForSeconds(1));

                while (!controlAI.isInDestination && canMove)
                {
                    if (controlAI.remainingDistance > 2)
                    {
                        controlAI.MoveTo(target.position);
                        lastTargetDirection   = target.position - controlAI.transform.position;
                        lastTargetDirection.y = 0;
                    }
                    else
                    {
                        controlAI.StrafeMoveTo(target.position, rotateToTargetForward ? target.forward : lastTargetDirection);
                    }
                    yield return(null);
                }
                if (canMove)
                {
                    onFinishMove.Invoke();
                }

                else
                {
                    onCancelMove.Invoke();
                }
                canMove = false;
            }