Unity-Tilemap 瓦片地图

1. 平铺调色板
  1. 用来在瓦片地图上进行绘制的调色板,里面装有预制好的瓦片。
  2. 使用吸管框选范围来仿制图章。
2. 瓦片
  1. 由图片精灵或2D纹理构建的瓦片,可以直接将图像拖入进行预制。
  2. 为了保证每个精灵填满瓦片,需要将每单位像素数和单位精灵大小保持一致
  3. 若瓦片碰撞器类型为精灵,那么单位碰撞会与图像边缘严丝合缝,若为网格,碰撞器将为单元格大小,若为无,该单位不会参与碰撞运算
3. 地形绘制
  1. 将在调色板中的瓦片选中,便可直接在场景的地图上绘制。
  2. Grid中单元格重排,以及 Tilemap中的方向 两项,可以决定地形排列是三维空间的哪个平面。默认是xyz和xy平面
  3. 同Grid多个瓦片地图,可以在调色板中直接切换快捷上色
  4. 添加Tilemap Collider 2D;来让地形具有单位碰撞的能力。
    如果勾选了由效果复合使用,碰撞会变成固定大小的一个整体,即便地形被破坏了单位碰撞也不会改变。

扩展:2d-extras

下载链接:https://github.com/Unity-Technologies/2d-extras
直接装入Assets

1. RuleTile

让瓦片以一定的规则进行上色
设置默认瓦片以及瓦片规则:

符号 描述
X 这个位置没有物体
<- -> 这个方向有物体
output选项:
符号 描述
单一 单一精灵瓦片
动画 随机选中一个精灵作为瓦片
动画 设置动画瓦片
2. PrefabBrush
  1. 生成一个预制体笔刷,方便地将预制体放入Tilemap
    值得注意的是,预制体并不会真的装入Tilemap。而是作为它的子集
  2. 预制体笔刷的选用在下方调色板下方的笔刷中选择
3. 其他笔刷
笔刷 描述 特殊
Coordinate Brush 可以显示坐标的笔刷 -
Line 直线笔刷 FillGaps: 填充空隙
Tint Bush 给2d-extras瓦片上色 -
Tint Bush(smooth) 给瓦片上一个发光点 需要给地形添加 TintedTilemap 材质
4. 相关函数
// 清空全部瓦片
// tm.ClearAllTiles();

// 根据坐标获取瓦片
TileBase tile1 = tm.GetTile(new Vector3Int(-1, -4, 0));

// 根据坐标设置瓦片
// tm.SetTile(new Vector3Int(-1, -3, 0), tile1);

// 根据坐标列表设置瓦片列表
// tm.SetTiles(new Vector3Int []{ new Vector3Int(-1, -3, 0) }, new TileBase []{ tile1 });

// 根据坐标删除瓦片
// tm.SetTile(new Vector3Int(-1, -4, 0), null);

// 将地图内一种瓦片替换成另一种瓦片
// tm.SwapTile(tile1, tb);

// 克隆一块地形到另一个地方
// TileBase[] tileArray = tm.GetTilesBlock(new BoundsInt(new Vector3Int(-1, -4, 0), new Vector3Int(2, 3, 1)));
// tm.SetTilesBlock(new BoundsInt(new Vector3Int(1, 4, 0), new Vector3Int(2, 3, 1)), tileArray);


void Update()
    {
    
    
    if (Input.GetMouseButton(0))
    {
    
    
        // 转换成游戏内的世界坐标
        Vector3 worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        // 转换成格子的坐标
        Vector3Int cellPos =  grid.WorldToCell(worldPos);

        // Debug.Log(worldPos);
        // Debug.Log(cellPos);
        ExplosionLogic(cellPos);
    }
}

void ExplosionLogic(Vector3Int cellPos)
{
    
    
    tm.SetTile(cellPos, null);
}

猜你喜欢

转载自blog.csdn.net/qq_50682713/article/details/117024044