您当前的位置: 首页 >  unity

莉萝爱萝莉

暂无认证

  • 3浏览

    0关注

    58博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

Unity-Tilemap 瓦片地图

莉萝爱萝莉 发布时间:2022-09-19 10:42:53 ,浏览量:3

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);
}
关注
打赏
1663903574
查看更多评论
立即登录/注册

微信扫码登录

0.2047s