我有一组对象,它们都共享相同的物理配置,因此有一个Physics2D 材质。 多个这样的对象可以同时在场景中处于活动状态。
我想在运行时以彼此独立的方式改变这些对象的摩擦力。 当我使用
Collider2D.sharedMaterial
属性时,这似乎改变了材质本身,并且我提到的材质被用于许多其他对象。 有没有一种方法可以在运行时以彼此独立的方式更新对象的摩擦力?
如果这可以在仍然使用Physics2D 材质的同时完成,那就太好了。 如果没有,我也可以不使用它,但在这种情况下,我无法弄清楚如何设置对象的摩擦力,因为
Collider2D.friction
属性似乎是只读的,与 Collider2D.sharedMaterial.friction
属性不同.
不幸的是,除了 Collider (3D) 之外,没有
material
属性可以像您期望的那样自动实例化材质的副本。
您可以使用例如“手动”执行此操作
var material = someCollider2D.sharedMaterial;
var copyMaterial = Instantiate(material);
// Make some modifications
someCollider2D.sharedMaterial = copyMaterial;