如何在tilemap碰撞中获取所有碰撞的图块?

时间:2019-06-22 08:05:17

标签: c# unity3d

我有一个Tilemap对撞机2D(触发)和一个胶囊对撞机2D(触发并有一个刚体2D)。 我成功地通过OnTriggerEnter2D方法获得了解决方法。但是对于如何获取与胶囊对撞机相撞的所有瓷砖毫无头绪。

在第一张图片中,您可以看到胶囊对撞机,在第二张图片中,您可以看到tilemapcollider。我想为所有与胶囊碰撞器碰撞的瓷砖上色。

Capsule collider 2D (green line)

Tilemap collider

我已经尝试过的内容 我尝试使用GetContacts函数获取所有联系点。但是我得到的计数为0。

private void OnTriggerEnter2D(Collider2D collision) {
    GameObject go = collision.gameObject;
    if (LayerMask.LayerToName(go.layer) == "ground") // is collision with TileMap
    {
        ContactPoint2D[] contacts = new ContactPoint2D[100];
        int contactCount = collision.GetContacts(contacts);
        Debug.Log(contactCounts); // 0

        for (int i = 0; i < contactCount; i++)
        {
            Vector3Int tile = walkableTilemap.WorldToCell(contacts[i].point);
            walkableTilemap.SetColor(tile, newColor);
        }
    }
}

0 个答案:

没有答案
相关问题