C# 如何在tilemap碰撞中获取所有碰撞的瓷砖?
我有一个Tilemap碰撞器2D(触发器)和胶囊碰撞器2D(触发器和刚体2D)。 我成功地在我的C# 如何在tilemap碰撞中获取所有碰撞的瓷砖?,c#,unity3d,C#,Unity3d,我有一个Tilemap碰撞器2D(触发器)和胶囊碰撞器2D(触发器和刚体2D)。 我成功地在我的OnTriggerEnter2D方法中获得了碰撞。但我不知道如何取回与太空舱对撞机相撞的所有瓷砖 在第一张图片中,你可以看到胶囊对撞机,在第二张图片中,你可以看到tilemapcollider。我想给所有与胶囊碰撞器碰撞的瓷砖上色 我已经尝试过的 我尝试使用GetContacts函数获取所有联系人。但我数到了0 private void OnTriggerEnter2D(Collider2D co
OnTriggerEnter2D
方法中获得了碰撞。但我不知道如何取回与太空舱对撞机相撞的所有瓷砖
在第一张图片中,你可以看到胶囊对撞机,在第二张图片中,你可以看到tilemapcollider。我想给所有与胶囊碰撞器碰撞的瓷砖上色
我已经尝试过的
我尝试使用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);
}
}
}
private void OnTriggerEnter2D(已碰撞R2D碰撞){
GameObject go=collision.GameObject;
if(LayerMask.LayerToName(go.layer)=“ground”)//与TileMap冲突
{
ContactPoint2D[]contacts=新的ContactPoint2D[100];
int contactCount=collision.GetContacts(contacts);
Debug.Log(contactCounts);//0
对于(int i=0;i
您碰撞的每个磁贴都应该有一个OnTiggerEnter2D事件,不是吗?@FredrikSchön不幸的是没有,我只收到一个来自磁贴的OnTiggerEnter2D事件。您碰撞的每个磁贴都应该有一个OnTiggerEnter2D事件,不是吗?@FredrikSchön不幸的是没有,我只收到一个来自tilemap的OnTiggerInter2D事件