好的,我试图从碰撞回调中访问boxcollider2d,如下所示:
void OnCollisionEnter2D(Collision2D col)
{
col.collider.GetComponent<BoxCollider2D>().sharedMaterial.friction = 0;
}
但首先它不起作用(propoerty为null),如果我有两个boxcollider2d,我该怎么办?
什么是正确的方法?
由于
答案 0 :(得分:0)
根据Collision2D documentation .collider属性是
传入的Collider2D参与了碰撞。
这意味着它与你碰撞的实际组件(BoxCollider2D,CircleCollider2D,PolygonCollider2D或EdgeCollider2D)。
因此,请尝试删除GetComponent,看看你得到了什么。如果你真的想使用GetComponent(如果不需要则不推荐使用),你可以使用col.gameObject
来获取GameObject,然后使用col.gameObject.GetComponent<BoxCollider2D>()
。
如果有多个组件,您将获得一组组件。这可能是您的问题,您必须指定所需的组件:col.gameObject.GetComponent<BoxCollider2D>()[0]
。但是如果你选择col.collider
,你应该得到碰撞中实际触碰过的对撞机。