public override bool Move(Vector3 targetPosition)
 {
     if (agent.remainingDistance >= 1 && movmentPatternState == SpiderMovmentPattern.FollowTarget)
     {
         return(false);
     }
     agent.SetDestination(targetPosition - (transform.forward * 0.5f));
     previousMoveState   = movmentPatternState;
     movmentPatternState = SpiderMovmentPattern.FollowTarget;
     return(true);
 }
    public override bool Move()
    {
        if (agent.remainingDistance >= 1)
        {
            return(false);
        }

        if (movmentPatternState == SpiderMovmentPattern.waitForSeconds)
        {
            timer -= Time.deltaTime;
        }
        switch (movmentPatternState)
        {
        case SpiderMovmentPattern.GoToPoint:
            base.Move();
            previousMoveState   = movmentPatternState;
            movmentPatternState = SpiderMovmentPattern.waitForSeconds;
            break;

        case SpiderMovmentPattern.MoveLeft:
            agent.SetDestination(transform.position + -transform.right);
            previousMoveState   = movmentPatternState;
            movmentPatternState = SpiderMovmentPattern.waitForSeconds;
            break;

        case SpiderMovmentPattern.waitForSeconds:
            if (timer < 0)
            {
                timer = timeWaiting;
                if (previousMoveState == SpiderMovmentPattern.GoToPoint)
                {
                    movmentPatternState = SpiderMovmentPattern.MoveLeft;
                }
                if (previousMoveState == SpiderMovmentPattern.MoveLeft)
                {
                    movmentPatternState = SpiderMovmentPattern.MoveRight;
                }
                if (previousMoveState == SpiderMovmentPattern.MoveRight || previousMoveState == SpiderMovmentPattern.FollowTarget)
                {
                    movmentPatternState = SpiderMovmentPattern.GoToPoint;
                }
            }
            else
            {
                return(false);
            }
            break;

        case SpiderMovmentPattern.MoveRight:
            agent.SetDestination(transform.position + transform.right);
            previousMoveState   = movmentPatternState;
            movmentPatternState = SpiderMovmentPattern.waitForSeconds;
            break;

        case SpiderMovmentPattern.FollowTarget:
            previousMoveState   = movmentPatternState;
            movmentPatternState = SpiderMovmentPattern.MoveRight;
            break;

        default:
            break;
        }
        return(true);
    }