private void CalculateMove()
    {
        if (CachedTransform == null)
        {
            CachedTransform = AIPlayer.transform;
        }

        TimeElapsed += Time.deltaTime;

        if (TimeElapsed > delayBeforeChangingMovingPattern)
        {
            TimeElapsed    = 0;
            currentPattern = AIPatrolPatternsArray[Random.Range(0, AIPatrolPatternsArray.Length)];
            destX          = currentPattern.x;
            destY          = currentPattern.y;
        }

        currentX = Mathf.MoveTowards(currentX, destX, Time.deltaTime * 2);
        currentY = Mathf.MoveTowards(currentY, destY, Time.deltaTime * 2);

        Input.SetAxis(Action.MoveHorizontal, currentX);
        Input.SetAxis(Action.MoveVertical, currentY);
        Input.SetAxis(Action.CameraHorizontal, currentPattern.Rx);
        Input.SetAxis(Action.CameraVertical, currentPattern.Ry);
        //AIPlayer.input.PressLeftStick(currentX, currentY);
        //AIPlayer.input.PressRightStick(currentPattern.Rx, currentPattern.Ry);
    }
    protected override void Start()
    {
        aim = GetComponent <PlayerAIAim>();

        currentX = 0;
        currentY = 0;
        destX    = Random.Range(-1, 1);
        destY    = Random.Range(-1, 1);

        AIPatrolPatternsArray = new AIPatrolInputPattern[]
        {
            new AIPatrolInputPattern(0, 1, 0, 0),
            new AIPatrolInputPattern(1, 0, 0, 0),
            new AIPatrolInputPattern(1, 1, 0, 0),
            new AIPatrolInputPattern(1, 1, 0, 0),
            new AIPatrolInputPattern(-1, 0, 0, 0),
            new AIPatrolInputPattern(0, -1, 0, 0),
            new AIPatrolInputPattern(-1, -1, 0, 0),
        };
    }