Unity:是否可以将场景设置为仅适用于一层的触发对撞机?

问题描述

Unity已经很好地管理了碰撞并很好地触发了,但我想知道是否可以优化触发器以仅对图层做出反应?

当前,如果我在场景中有许多不同的对象与碰撞器,我需要这样做:

void OnTriggerEnter (Collider other) {
    if (other.gameObject.layer == myLayer) {
        // do stuff here
    }
}

但这意味着,用对撞机女巫的 ALL 计算得出的碰撞似乎没有效率。

如果我想让触发器仅对玩家做出反应,是否有办法告诉它忽略所有其他层,以避免不必要的计算?

解决方法

是的,使用手册here中所述的碰撞矩阵。

,
  • 添加新的图层蒙版(或仅使用现有的蒙版)
  • 取消选中所有可能与之碰撞的层,“ Player”层除外
  • 将游戏对象的图层更改为新的修改后的图层
  • 现在,该对象只能与玩家碰撞,并且只能由玩家触发(前提是其中一个具有刚体组件)