Tilemap随笔
1、暂未处理多层情况,不过官方示例有例子可以参考。
2、画板上资源处理:两种方式拖入资源;
-sprite拖入画板,会提示保存Tile文件,Tile文件上有较少的设置(图1-1)。
-rule文件拖入画板,直接可使用。
3、稍微说一下tilemap的rule文件怎么创建的。
导入官方的一个tilemap的扩展包,放到Assets下直接可使用;
扩展包内容和功能直接看github上的讲解就很清楚了。
4、识别点击位置的图片并更改
public void OnSendRay()
{
if (Input.GetMouseButton(0))
{
Ray ray = scenesCamera.ScreenPointToRay(Input.mousePosition);
RaycastHit2D hit = Physics2D.Raycast(new Vector2(ray.origin.x, ray.origin.y), ray.direction);
//Debug.Log("down");
if (hit.collider != null)
{
var tilePos = map.WorldToCell(hit.point);
if (isClear)
{
map.SetColor(tilePos, new Color(1, 1, 1, 0));
}
else
{
map.SetTile(tilePos, rule);
map.SetColor(tilePos, new Color(1, 1, 1, 1));
}
}
}
}
用一下上面的点换算功能,应该能直接通过点获取地图坐标值,这样就不用射线检测碰撞了。
5、有的时候点击到地图的坐标,需要将物体移动到地图对应的坐标上,就需要反向转化坐标。
private void GetBuildPos(Vector3Int inPos)
{
Vector3 worldPos = buildMap.CellToWorld(inPos);
Debug.Log("worldPos=" + worldPos);
}
6、画笔tile翻转:画笔在屏幕时按键:“【”,“】”,shift+“【”,“】”
TileData内的transform,有矩阵数据来判断是否被旋转过。
7、设置颜色时无效的情况,移除掉锁定标记就好了。
BuildMap.RemoveTileFlags(newStartPos, TileFlags.LockColor);
BuildMap.SetColor(newStartPos,
new Color(1, 0.3f, 0.3f, 0.6f));
参考网站:
-官方案例:(unity官方地址)
-扩展包:(github tilemap-extras)