在运行时设置 Collider2D 摩擦力,无需修改Physics2D 材质

问题描述 投票:0回答:1

我有一组对象,它们都共享相同的物理配置,因此有一个Physics2D 材质。 多个这样的对象可以同时在场景中处于活动状态。

我想在运行时以彼此独立的方式改变这些对象的摩擦力。 当我使用

Collider2D.sharedMaterial
属性时,这似乎改变了材质本身,并且我提到的材质被用于许多其他对象。 有没有一种方法可以在运行时以彼此独立的方式更新对象的摩擦力?

如果这可以在仍然使用Physics2D 材质的同时完成,那就太好了。 如果没有,我也可以不使用它,但在这种情况下,我无法弄清楚如何设置对象的摩擦力,因为

Collider2D.friction
属性似乎是只读的,与
Collider2D.sharedMaterial.friction
属性不同.

unity-game-engine
1个回答
0
投票

不幸的是,除了 Collider (3D) 之外,没有

material
属性可以像您期望的那样自动实例化材质的副本。

您可以使用例如“手动”执行此操作

var material = someCollider2D.sharedMaterial;
var copyMaterial = Instantiate(material);
// Make some modifications 
someCollider2D.sharedMaterial = copyMaterial;
© www.soinside.com 2019 - 2024. All rights reserved.