|
Tilemap随笔
1、暂未处理多层情况,不过官方示例有例子可以参考。
2、画板上资源处理:两种方式拖入资源;
-sprite拖入画板,会提示保存Tile文件,Tile文件上有较少的设置(图1-1)。
-rule文件拖入画板,直接可使用。
图1-1
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) |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|