You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity Tilemap:如何通过脚本获取瓦片的X、Y坐标位置?

解决Unity Tilemap获取瓦片坐标的问题

嘿,刚用Tilemap遇到这个问题太正常了!毕竟Tile本身是可复用的资源,它确实不会存储自己在Tilemap里的位置——位置信息是存在Tilemap的格子数据里的,咱们得通过Tilemap的API来转换坐标,我给你一步步讲清楚:

核心思路

你需要把鼠标点击的世界坐标转换成Tilemap的格子坐标(Vector3Int),这个坐标就是瓦片所在的X、Y位置(Z轴通常为0,多层Tilemap才会用到)。之后还能把格子坐标转回世界坐标,用来移动你的对象。

具体步骤 & 示例代码

下面是一个完整的脚本示例,你可以直接参考:

using UnityEngine;
using UnityEngine.Tilemaps;

public class TilemapClickHandler : MonoBehaviour
{
    public Tilemap targetTilemap; // 拖拽你的Tilemap到这个字段
    public GameObject objectToMove; // 你要移动的对象(如果是操作ScriptableObject,换成对应引用即可)

    void Update()
    {
        // 检测鼠标左键点击
        if (Input.GetMouseButtonDown(0))
        {
            // 1. 获取鼠标点击的世界坐标
            Vector3 worldPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            // 2D Tilemap要对齐Z轴,避免坐标偏差
            worldPos.z = targetTilemap.transform.position.z;

            // 3. 转换为Tilemap的格子坐标(这就是瓦片的X/Y整数坐标)
            Vector3Int cellPos = targetTilemap.WorldToCell(worldPos);

            // 4. 先判断这个格子里有没有瓦片,避免空操作
            if (targetTilemap.HasTile(cellPos))
            {
                Debug.Log($"点击的瓦片坐标:X={cellPos.x}, Y={cellPos.y}");

                // 如果要把对象移动到瓦片中心位置,把格子坐标转回世界坐标
                Vector3 tileWorldCenter = targetTilemap.CellToWorld(cellPos) + targetTilemap.cellSize / 2;
                objectToMove.transform.position = tileWorldCenter;

                // 如果是操作ScriptableObject,比如记录它的位置,直接用cellPos即可
                // 示例:yourScriptableObject.tilePosition = cellPos;
            }
        }
    }
}

关键API解释

  • tilemap.WorldToCell(Vector3 worldPos):把世界坐标转换成Tilemap的格子坐标,返回的Vector3Int就是瓦片所在的整数位置
  • tilemap.HasTile(Vector3Int cellPos):检查指定格子里是否存在瓦片,避免空操作
  • tilemap.CellToWorld(Vector3Int cellPos):把格子坐标转回世界坐标,注意这个方法返回的是格子的左下角,所以要加上cellSize/2才能得到瓦片中心位置

补充说明

为什么Tile本身没有位置属性?因为一个Tile资源可以被重复放置在Tilemap的多个格子里,它是“模板”一样的存在,不绑定具体位置——所有位置信息都由Tilemap来管理,所以必须通过Tilemap的坐标转换API来获取。

内容的提问来源于stack exchange,提问作者jeffrey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:24:53