首页 > 解决方案 > Unity - 如何检查位置x,y,z是否存在特定Tilemap的Tile

问题描述

我在同一个网格中制作了 4 个 TileMap
https://i.imgur.com/Zlr3Tlb.png

Lvl1 = 关卡块/瓷砖,
Lvl1 Dec = 关卡装饰,
负片 = 玩家无法跳跃的部分,
正片 = [红色部分]玩家停止跳跃动画的部分

https://i.imgur.com/dx8YZrz.png

所以问题是我想检查在那个 Tilemap 的特定位置是否有一个 Positive Tile,但我的代码只是检查 Colliders

if (TileChanger == Grass)
{
    Vector3 pos = Cam.ScreenToWorldPoint(Input.mousePosition);
    RaycastHit2D hitdown = Physics2D.Raycast(vecdown, Vector2.zero);
    if (hitdown != false && hitdown.collider != null)
    {
        PositiveParts.SetTile(vecInt, Positive);
        PositiveParts.SetTile(vecIntdown, null);
    }
    else
    {
        PositiveParts.SetTile(vecInt, Positive);
    }
}

那么是否有任何代码可以从特定的 Tilemap 中获取特定的 Tile?

标签: c#unity3d

解决方案


你不能只使用对撞机的gameObject属性来获取瓷砖吗?

hitdown.collider.gameObject

然后使用您自己的验证检查这是否是正面图块。

编辑:

如果你只想要一个特定坐标的瓦片,你可以使用 Tilemap.GetTile 方法。可在此处找到文档: Tilemap.GetTile


推荐阅读