Cocos2d iphone 在cocos2d中更改动态多边形中的多边形顶点

Cocos2d iphone 在cocos2d中更改动态多边形中的多边形顶点,cocos2d-iphone,Cocos2d Iphone,我是cocos2d新手,首先我学习了如何先做一个圆,然后是一个正方形,现在我学习了如何创建一个有大量顶点的多边形,我用“b2polygonshape多边形”拾取这些顶点,下面是我的代码 -(void) createDynamicPoly:(CGPoint)p; { b2BodyDef bodyDefPoly; bodyDefPoly.type = b2_dynamicBody; bodyDefPoly.position.Set(p.x/PTM_RATIO, p.y/PTM_RATIO); b

我是cocos2d新手,首先我学习了如何先做一个圆,然后是一个正方形,现在我学习了如何创建一个有大量顶点的多边形,我用“b2polygonshape多边形”拾取这些顶点,下面是我的代码

-(void) createDynamicPoly:(CGPoint)p;
{

b2BodyDef bodyDefPoly;
bodyDefPoly.type = b2_dynamicBody; 
bodyDefPoly.position.Set(p.x/PTM_RATIO, p.y/PTM_RATIO);
b2Body *polyBody = world->CreateBody(&bodyDefPoly);

int count = 8;
b2Vec2 vertices[8];

vertices[0].Set(10.0f/PTM_RATIO,0.0/PTM_RATIO);
vertices[1].Set(20.0f/PTM_RATIO,0.0f/PTM_RATIO);
vertices[2].Set(30.0f/PTM_RATIO,10.0f/PTM_RATIO);
vertices[3].Set(30.0f/PTM_RATIO,20.0f/PTM_RATIO); 
vertices[4].Set(20.0f/PTM_RATIO,30.0f/PTM_RATIO);
vertices[5].Set(10.0f/PTM_RATIO,30.0f/PTM_RATIO); 
vertices[6].Set(00.0f/PTM_RATIO,20.0f/PTM_RATIO);
vertices[7].Set(0.0f/PTM_RATIO,10.0f/PTM_RATIO);

b2PolygonShape polygon; 
polygon.Set(vertices, count);

b2FixtureDef fixtureDefPoly;
fixtureDefPoly.shape = &polygon;
fixtureDefPoly.density = 1.0f;
fixtureDefPoly.friction = 0.3f;
polyBody->CreateFixture(&fixtureDefPoly);


}
我的问题是如何在不绘制新形状的情况下,主动更改此多边形的顶点并更改屏幕上的形状。我的总体目标是创造一个自由流动的水滴


谢谢

修改上一条语句以返回指向结果对象的指针。这可以作为类变量保存(即类接口中的b2Fixture*fixture)

然后,无论您要在何处更改多边形形状的顶点,都可以抓住一个指向与设备关联的形状对象的指针:

b2PolygonShape* shape = (b2PolygonShape*) fixture->GetShape();
并根据需要修改顶点:

shape->m_vertices[0].Set(new_x0/PTM_RATIO,new_y0/PTM_RATIO); 
shape->m_vertices[1].Set(new_x1/PTM_RATIO,new_y1/PTM_RATIO); 
shape->m_vertices[2].Set(new_x2/PTM_RATIO,new_y2/PTM_RATIO); 
...
shape->m_vertices[7].Set(new_x7/PTM_RATIO,new_y7/PTM_RATIO); 

祝你好运

非常感谢你,只有一个问题。。。它说没有像您在第二行代码中输入的“GetShape”这样的方法
shape->m_vertices[0].Set(new_x0/PTM_RATIO,new_y0/PTM_RATIO); 
shape->m_vertices[1].Set(new_x1/PTM_RATIO,new_y1/PTM_RATIO); 
shape->m_vertices[2].Set(new_x2/PTM_RATIO,new_y2/PTM_RATIO); 
...
shape->m_vertices[7].Set(new_x7/PTM_RATIO,new_y7/PTM_RATIO);