コード例 #1
0
    public override bool Resolve(ParamsObject requestParams, out Vector2 cellCenter)
    {
        Vector2    cellWorldPosition = requestParams.GetParam <Vector2>();
        Vector3Int cellGridPosition  = grid.WorldToCell(cellWorldPosition);
        float      xCenter           = Mathf.Floor(cellGridPosition.x) + grid.cellSize.x / 2;
        float      yCenter           = Mathf.Floor(cellGridPosition.y) + grid.cellSize.y / 2;

        cellCenter = new Vector2(xCenter, yCenter);
        return(true);
    }
コード例 #2
0
    public override bool Resolve(ParamsObject requestParams, out LayerMask resolveParams)
    {
        Vector2    cellWorldPosition = requestParams.GetParam <Vector2>();
        Vector3Int cellGridPosition  = grid.WorldToCell(cellWorldPosition);
        Tilemap    tilemap           = tilemaps.FirstOrDefault(t => t.HasTile(cellGridPosition));

        if (tilemap != null)
        {
            resolveParams = tilemap.gameObject.layer;
            return(true);
        }
        else
        {
            resolveParams = default;
            return(false);
        }
    }
コード例 #3
0
    public override bool Resolve(ParamsObject requestParams, out List <Vector2> tilePositions)
    {
        tilePositions = new List <Vector2>();
        TileBase neededTile = requestParams.GetParam <TileBase>();

        foreach (Tilemap tilemap in tilemaps)
        {
            for (int x = tilemap.cellBounds.xMin; x < tilemap.cellBounds.xMax; x++)
            {
                for (int y = tilemap.cellBounds.yMin; y < tilemap.cellBounds.yMax; y++)
                {
                    Vector3Int localPlace = (new Vector3Int(x, y, (int)tilemap.transform.position.z));

                    if (tilemap.GetTile(localPlace) == neededTile)
                    {
                        tilePositions.Add(tilemap.CellToWorld(localPlace));
                    }
                }
            }
        }
        return(tilePositions.Count > 0);
    }