我想在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;
}
}
是因为精灵渲染器需要一个精灵吗?但是这会是不同的形式取决于分段的数量。有没有解决这个问题的方法,我如何在代码端做到这一点?
顺便说一句,我需要这是一个游戏对象,而不是画布,因为它将是我的“玩家”。
1条答案
按热度按时间7ajki6be1#
我认为你需要一个精灵来完成这个工作。试着把所有这些属性附加到一个你已经创建的对象上,而不是在脚本中创建一个。
另外,请查看相机设置,可能您设置的剪裁平面无法看到圆。