示例#1
0
    /// <summary>
    /// Move towards destination first in x direction, then in y direction.
    /// </summary>
    private void MoveTowardsDestination()
    {
        int     xDirection = Utility.GetXDirection(transform.position, currentDestination, walkSpeed);
        Vector2 pos        = transform.position;

        if (xDirection != 0)
        {
            transform.position = new Vector2(pos.x + walkSpeed * xDirection, pos.y);
        }
        else
        {
            int yDirection = Utility.GetYDirection(transform.position, currentDestination, walkSpeed);
            if (yDirection != 0)
            {
                transform.position = new Vector2(pos.x, pos.y + walkSpeed * yDirection);
            }
            else
            {
                if (farmableTiles.Count == 0)
                {
                    headedSomewhere = false; return;
                }
                //get next position
                time = 0f;
                FarmableTile farmableTile = farmableTiles.Dequeue();
                goblin.FarmTile(farmableTile);
                if (farmableTiles.Count == 0)
                {
                    currentDestination = ogPosition; return;
                }
                currentDestination = farmableTiles.Peek().transform.position;
            }
        }
    }