unity3d Unity 2D创建圆并分割成段

beq87vna  于 2023-03-19  发布在  其他
关注(0)|答案(1)|浏览(129)

我想在Unity 2D中创建一个被分成一定数量的片段的圆。片段应该有自己的颜色和匹配的碰撞器。使用下面的代码,我设法得到了一个可调整数量的片段,形成了一种圆。但是,我不能让它在模拟器中显示,我只能在场景中看到它。

public int segments = 8;
public Material segmentMaterial;

void Start()
{
    float angle = 0f;
    float angleStep = 360f / segments;
    Vector2 center = transform.position;

    for (int i = 0; i < segments; i++)
    {
        GameObject segment = new GameObject("Segment" + i);
        segment.transform.parent = transform;

        var segmentCollider = segment.AddComponent<PolygonCollider2D>();
        var segmentRenderer = segment.AddComponent<SpriteRenderer>();

        Vector2[] segmentVertices = new Vector2[3];
        segmentVertices[0] = center;
        segmentVertices[1] = center + new Vector2(Mathf.Cos(Mathf.Deg2Rad * angle), Mathf.Sin(Mathf.Deg2Rad * angle));
        angle += angleStep;
        segmentVertices[2] = center + new Vector2(Mathf.Cos(Mathf.Deg2Rad * angle), Mathf.Sin(Mathf.Deg2Rad * angle));

        segmentCollider.points = segmentVertices;

        segmentRenderer.material = segmentMaterial;

        segment.transform.position = transform.position;
        segment.transform.rotation = transform.rotation;
    }
}

是因为精灵渲染器需要一个精灵吗?但是这会是不同的形式取决于分段的数量。有没有解决这个问题的方法,我如何在代码端做到这一点?
顺便说一句,我需要这是一个游戏对象,而不是画布,因为它将是我的“玩家”。

7ajki6be

7ajki6be1#

我认为你需要一个精灵来完成这个工作。试着把所有这些属性附加到一个你已经创建的对象上,而不是在脚本中创建一个。
另外,请查看相机设置,可能您设置的剪裁平面无法看到圆。

相关问题