我用SpriteShape Prefabs构建了一个随机生成的迷你游戏。随机生成器移动并更改SpriteShape的样条线。但是,仅当我单击Hirarchy上的Instantized预制件时,Edge Collider 2D才刷新其大小。

我该怎么做才能刷新对撞机



这是世界刚生成时的场景。所有碰撞器都在左侧。
c# - Unity:对撞机未按脚本调整 Sprite 形状的大小-LMLPHP



这是我单击前两个生成的图层后的场景。 2个碰撞器将其大小刷新为SpriteShape
c# - Unity:对撞机未按脚本调整 Sprite 形状的大小-LMLPHP



这是我们的代码:

        GameObject currentLayer;
        Spline spline;
        int lastXPos = Random.Range(1, maxXPos-2);

        currentLayer = Instantiate(layer);
        currentLayer.transform.parent = gameObject.transform;
        currentLayer.transform.localPosition = new Vector3(0,-(2+i*2));

        spline = currentLayer.GetComponent<SpriteShapeController>().spline;
        spline.SetPosition(0, new Vector3(0, 0));
        spline.SetPosition(1, new Vector3(lastXPos, 0));

最佳答案

当前,自动更新对撞机到处都有一些错误。
最好的方法是手动烘焙脚本中的碰撞器。
只需调用BakeCollider()方法即可。在SpriteShapeController下
应该做的工作。

09-25 19:12