private void ChangeDirection()
    {
        ShuffleDirections(directionList);
        Vector2 NewDirection = Vector2.zero;

        foreach (directions direction in directionList)
        {
            switch (direction)
            {
            case directions.up:
            {
                if (pathfinder.CanWalkUp())
                {
                    walk.direction      = Vector2.up;
                    walk.walkHorizontal = false;
                    return;
                }
                break;
            }

            case directions.down:
            {
                if (pathfinder.CanWalkDown())
                {
                    walk.direction      = Vector2.down;
                    walk.walkHorizontal = false;
                    return;
                }
                break;
            }

            case directions.left:
            {
                if (pathfinder.CanWalkLeft())
                {
                    walk.direction      = Vector2.left;
                    walk.walkHorizontal = true;
                    return;
                }
                break;
            }

            case directions.right:
            {
                if (pathfinder.CanWalkRight())
                {
                    walk.direction      = Vector2.right;
                    walk.walkHorizontal = true;
                    return;
                }
                break;
            }

            default: break;
            }
        }
    }
Beispiel #2
0
    private void RecalculateDirection()
    {
        Vector2 direction      = (player.position - transform.position).normalized;
        bool    walkHorizontal = false;
        Vector2 DirectionFinal = Vector2.zero;

        if (Mathf.Abs(direction.x) >= Mathf.Abs(direction.y))
        {
            if (pathfinder.CanWalkLeft() || pathfinder.CanWalkRight())
            {
                walkHorizontal = true;
            }
        }

        if (walkHorizontal == true)
        {
            if (direction.x >= 0 && pathfinder.CanWalkRight())
            {
                DirectionFinal.x = 1;
            }
            else
            {
                DirectionFinal.x = -1;
            }
        }
        else
        {
            if (direction.y >= 0 && pathfinder.CanWalkUp())
            {
                DirectionFinal.y = 1;
            }
            else
            {
                DirectionFinal.y = -1;
            }
        }

        walk.direction      = DirectionFinal;
        walk.walkHorizontal = walkHorizontal;
    }