Cocos2d iphone Cocos2d使用CCSprite绘制多边形
你能帮忙吗。要绘制多边形(不同角度的梁)并将长方体2d实体应用于该多边形。你能让我知道如何创建一个多边形形状的CCSprite吗 任何例子都会有帮助Cocos2d iphone Cocos2d使用CCSprite绘制多边形,cocos2d-iphone,polygon,box2d,ccsprite,Cocos2d Iphone,Polygon,Box2d,Ccsprite,你能帮忙吗。要绘制多边形(不同角度的梁)并将长方体2d实体应用于该多边形。你能让我知道如何创建一个多边形形状的CCSprite吗 任何例子都会有帮助 干杯最简单的方法是打开图像编辑器(例如paint或photoshop)并创建所需的图像。用户可以在程序中使用它 当使用cocos2d-box2d模板创建xcode应用程序时,还有一个helloWorld场景。它创建了一组带有纹理的正方形 创建多边形实体 -(void) createDynamicPoly { b2BodyDef body
干杯最简单的方法是打开图像编辑器(例如paint或photoshop)并创建所需的图像。用户可以在程序中使用它 当使用cocos2d-box2d模板创建xcode应用程序时,还有一个helloWorld场景。它创建了一组带有纹理的正方形
-(void) createDynamicPoly {
b2BodyDef bodyDefPoly;
bodyDefPoly.type = b2_dynamicBody;
bodyDefPoly.position.Set(3.0f, 10.0f);
b2Body *polyBody = world->CreateBody(&bodyDefPoly);
int count = 8;
b2Vec2 vertices[8];
vertices[0].Set(0.0f / PTM_RATIO,0.0f / PTM_RATIO);
vertices[1].Set(48.0f/PTM_RATIO,0.0f/PTM_RATIO);
vertices[2].Set(48.0f/PTM_RATIO,30.0f/PTM_RATIO);
vertices[3].Set(42.0f/PTM_RATIO,30.0f/PTM_RATIO);
vertices[4].Set(30.0f/PTM_RATIO,18.0f/PTM_RATIO);
vertices[5].Set(18.0f/PTM_RATIO,12.0f/PTM_RATIO);
vertices[6].Set(6.0f/PTM_RATIO,18.0f/PTM_RATIO);
vertices[7].Set(0.0f/PTM_RATIO,30.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);
}
fixtureDefPoly.SetUserData() = spriteObject;
b2Fixture *fixture;
fixture = circleBody->CreateFixture(&fixtureDefPoly);
fixture->SetUserData(@"spriteObject");
@安德烈斯:谢谢。对不起,我不清楚。。这些是动态多边形。基本上是为结构绘制的梁。有什么建议吗?@Mountain:你想有一个附有精灵的身体吗?嘿,没关系,但图像是矩形的,所以在正确检测碰撞时会出现问题。。。如果你想在这样的图像中检测碰撞,那就说我吧。。。。
CGPoint startPt = edge.start ;
CGPoint endpt = edge.end ;
//length of the stick body
float len = abs(ccpDistance(startPt, endpt))/PTM_RATIO;
//to calculate the angle and position of the body.
float dx = endpt.x-startPt.x;
float dy = endpt.y-startPt.y;
//position of the body
float xPos = startPt.x+dx/2.0f;
float yPos = startPt.y+dy/2.0f;
//width of the body.
float width = 1.0f/PTM_RATIO;
b2BodyDef bodyDef;
bodyDef.position.Set(xPos/PTM_RATIO, yPos/PTM_RATIO);
bodyDef.angle = atan(dy/dx);
NSLog([NSString stringWithFormat:@"Setting angle %f",bodyDef.angle]);
CCSprite *sp = [CCSprite spriteWithFile:@"material-wood.png" rect:CGRectMake(0, 0, 12, 12)];
//TODO: fix shape
[self addChild:sp z:1 ];
bodyDef.userData = sp;
bodyDef.type = b2_dynamicBody;
b2Body* body = world->CreateBody(&bodyDef);
b2PolygonShape shape;
b2Vec2 rectangle1_vertices[4];
rectangle1_vertices[0].Set(-len/2, -width/2);
rectangle1_vertices[1].Set(len/2, -width/2);
rectangle1_vertices[2].Set(len/2, width/2);
rectangle1_vertices[3].Set(-len/2, width/2);
shape.Set(rectangle1_vertices, 4);
b2FixtureDef fd;
fd.shape = &shape;
fd.density = 1.0f;
fd.friction = 0.300000f;
fd.restitution = 0.600000f;
body->CreateFixture(&fd);