M0r*_*3v5 7 arrays polygon objective-c pod box2d
我正在为我的游戏开发一个导入器,它读取一个xml,然后为所有东西创建box2d主体.
例如
<polygon vertexCount="3" density="0" friction="0.25" restitution="0.30000000000000004">
<vertice x="6.506500000000001" y="0.4345"/>
<vertice x="6.534970527648927" y="0.48385302734375"/>
<vertice x="6.478029472351075" y="0.48385302734375"/>
</polygon>
Run Code Online (Sandbox Code Playgroud)
问题出在我现在面向多边形部分的导出器中,我需要在添加顶点和设置它们的位置之前设置b2vec2数组.
int count = [[childnode attributeForName:@"vertexCount"] intValue];
b2Vec2 points[count];
Run Code Online (Sandbox Code Playgroud)
但是box2d希望点[5]是一个实际的文字数字(比如点[5]而不是变量点[数字],当我有变量计数时输出的错误是:
Variable length array of non-POD element type 'b2Vec2'
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?我试着把它变成一个常数,但这也不起作用(因为我需要它是动态的,所以没有帮助我).
And*_*rew 19
您必须在堆上创建数组:
b2Vec2 *array = new b2Vec2[count];
Run Code Online (Sandbox Code Playgroud)
完成后不要忘记手动删除阵列.
或者更好地使用std :: vector:
a)
std::vector<b2Vec2> vertices(count);
vertices[0].set(2, 3);
vertices[1].set(3, 4);
...
b)
std::vector<b2Vec2> vertices;
vertices.push_back(b2Vec2(2, 3));
vertices.push_back(b2Vec2(3, 4));
Run Code Online (Sandbox Code Playgroud)
M0r*_*3v5 -3
采取了更简单的路线并访问了不应该的变量:
polygonShape.m_vertexCount = count;
Run Code Online (Sandbox Code Playgroud)
然后将它们设置在for循环中:
polygonShape.m_vertices[c].Set(x,y);
Run Code Online (Sandbox Code Playgroud)
它工作得很好:)
归档时间: |
|
查看次数: |
7988 次 |
最近记录: |