TileMap代码控制相关

该文介绍了如何在Unity中操作瓦片地图,包括清空所有瓦片、获取和设置指定坐标格子的瓦片、删除瓦片、替换瓦片以及进行世界坐标到格子坐标的转换。示例代码展示了从屏幕坐标到世界坐标,再到格子坐标的转换过程,并实现点击鼠标时替换瓦片的功能。
摘要由CSDN通过智能技术生成

1、清空瓦片地图

map.ClearAllTiles();

2、获取指定坐标格子

        TileBase tmp = map.GetTile(Vector3Int.zero);
        print(tmp);

3、设置删除瓦片

        map.SetTile(new Vector3Int(0, 2, 0), tileBase);

        map.SetTile(new Vector3Int(1, 0, 0), null);

4、替换瓦片

map.SwapTile(tmp, tileBase);

5、世界坐标转格子坐标

摄像机位置 

屏幕坐标转世界坐标

Vector3 mousePos = Input.mousePosition;
Vector3 screenToWorld = Camera.main.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, 10));

这个Z轴的10跟摄像机的位置对应

世界坐标转格子坐标

    void Update()
    {
        //按下鼠标左键
        if (Input.GetMouseButtonDown(0))
        {
            //得到鼠标在屏幕的坐标
            Vector3 mousePos = Input.mousePosition;
            //屏幕坐标转世界坐标
            Vector3 screenToWorld = Camera.main.ScreenToWorldPoint(new Vector3(mousePos.x, mousePos.y, 10));
            Debug.Log(screenToWorld);
            //世界坐标转屏幕坐标
            Vector3Int gridPosition = grid.WorldToCell(screenToWorld);
            //将鼠标所指位置更换tile
            map.SetTile(gridPosition, tb);
        }
    }

效果

点击鼠标

 

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值