我刚刚开始习惯使用 Unity 的新图 block map 工具 (UnityEngine.Tilemaps)。
我遇到的一个问题是我不知道如何通过脚本获取放置的图 block 的 x,y 坐标。我试图将脚本中图 block map 上的 scriptableObject 移动到玩家单击的新位置,但我不知道如何获取单击的图 block 位置的坐标。 Tile 类似乎没有任何位置属性(Tile 对它的位置一无所知),因此 Tilemap 必须有答案。我无法在 Unity 文档中找到有关如何获取 Tilemap 中选定图 block 的 Vector3 坐标的任何内容。
最佳答案
如果您有权访问Tile
例如,您可以使用其变换(或单击时的光线转换)来获取其世界位置,然后通过 WorldToCell
获取图 block 坐标。你的方法Grid
组件(查看 documentation )。
编辑:
Unity 似乎没有实例化图 block ,而是仅使用一个图 block 对象来管理该类型的所有图 block ,我不知道这一点。
要获得正确的位置,您必须自己计算。以下示例说明了如果网格位于 z = 0 的 xy 平面上,如何获取鼠标光标处的图 block 位置
// get the grid by GetComponent or saving it as public field
Grid grid;
// save the camera as public field if you using not the main camera
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
// get the collision point of the ray with the z = 0 plane
Vector3 worldPoint = ray.GetPoint(-ray.origin.z / ray.direction.z);
Vector3Int position = grid.WorldToCell(worldPoint);
关于unity-game-engine - 如何获取瓦片 map 中瓦片的 x,y 坐标位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48277320/