gpt4 book ai didi

unity-game-engine - 如何获取瓦片 map 中瓦片的 x,y 坐标位置?

转载 作者:行者123 更新时间:2023-12-02 22:05:08 26 4
gpt4 key购买 nike

我刚刚开始习惯使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com