所以我使用 Unity。
我会试着解释一下。网格是:
Sprite sprite = m_SpriteRenderer.sprite;
我试图将其一半的三角形和顶点存储在四个单独的变量中:
//First half
ushort[] triA = triangles.Take(triangles.Length / 2).ToArray();
//Second Half
ushort[] triB = triangles.Skip(triangles.Length / 2).ToArray();
//First half
Vector2[] spriteA = spriteVertices.Take(spriteVertices.Length / 2).ToArray();
//Second Half
Vector2[] spriteB = spriteVertices.Skip(spriteVertices.Length / 2).ToArray();
然后,我分别实例化这些变量:
GameObject a = Instantiate(gameObject);
//Stops infinite loop
a.GetComponent<SplitCircle>().enabled = false;
/*
* Error of Invalid triangle index array.
* Some indices are referencing out of bounds vertices,
* IndexCount: 189, VertexCount: 64
*/
a.GetComponent<SpriteRenderer>().sprite.OverrideGeometry(spriteA, triA);
为简单起见,我只关注网格的前半部分。 我的问题是了解我所做的是否有意义。我什至需要存储三角形吗?我也不明白我的三角形是如何引用越界顶点的。
我希望一切顺利。
注意:我知道我可以从精灵中创建更小的游戏对象并创建分裂的错觉,但我希望我正在做的事情具有更高的质量。