示例#1
0
    /// <summary>
    /// Returns whether or not a node is valid
    /// A node is not valid if already in the open list
    /// or if the node is an obstacle
    /// </summary>
    /// <returns></returns>
    private bool IsTileValid(Vector2 tile)
    {
        // Map bounderies
        if (tile.x >= MAP_LIMIT || tile.x <= -MAP_LIMIT || tile.y >= MAP_LIMIT || tile.y <= -MAP_LIMIT)
        {
            return(false);
        }

        // is node an obstacle?
        if (_tileHandler.IsTileOccupied(tile))
        {
            return(false);
        }

        // Is node in innerNodelist?
        foreach (Node n in _innerNodes)
        {
            if (tile == n.Tile)
            {
                return(false);
            }
        }

        return(true);
    }
    /// <summary>
    /// Adds obstacle from tile where mouse clicked
    /// </summary>
    private void AddObstacle()
    {
        Vector2 tile = MousePositionToTile();

        // If tile occupied by obstacle already
        if (_tileHandler.IsTileOccupied(tile))
        {
            return;
        }

        // If space is occupied by player og goal
        if ((_tileHandler.ClosestTile(Player.transform.position) == tile) || (_tileHandler.ClosestTile(Goal.transform.position) == tile))
        {
            return;
        }

        _tileHandler.AddTile(tile, CreateObstacle(tile));
    }