Cocos2d iphone 在cocos2d中更改动态多边形中的多边形顶点
我是cocos2d新手,首先我学习了如何先做一个圆,然后是一个正方形,现在我学习了如何创建一个有大量顶点的多边形,我用“b2polygonshape多边形”拾取这些顶点,下面是我的代码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
-(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);