0
_space = cpSpaceNew(); // setup the world in which the simulation takes place
        _space->elasticIterations = _space->iterations;
        _space->gravity = cpv(0.0f, GRAVITY); // initial gravity vector

CGSize size = [[self view] bounds].size;
//setup the 'edges' of our world so the bouncing balls don't move offscreen
cpBody *edge = cpBodyNewStatic();
cpShape *shape = NULL;

// left
shape = cpSegmentShapeNew(edge, cpvzero, cpv(0.0f, size.height-10), 0.0f);
shape->u = 0.1f; // minimal friction on the ground
shape->e = 0.7f;
cpSpaceAddStaticShape(_space, shape);
// a body can be represented by multiple shapes

// top
shape = cpSegmentShapeNew(edge, cpvzero, cpv(size.width-10, 0.0f), 0.0f);
shape->u = 0.1f;
shape->e = 0.7f;
cpSpaceAddStaticShape(_space, shape);

// right
shape = cpSegmentShapeNew(edge, cpv(size.width-10, 0.0f), cpv(size.width-10, size.height-10), 0.0f);
shape->u = 0.1f;
shape->e = 0.7f;
cpSpaceAddStaticShape(_space, shape);

// bottom
shape = cpSegmentShapeNew(edge, cpv(0.0f, size.height-10), cpv(size.width-10, size.height-10), 0.0f);
shape->u = 0.5f;
shape->e = 0.15f;
cpSpaceAddStaticShape(_space, shape);

使用它可以在屏幕周围制作矩形空间但我想让它变成圆形。欢迎任何建议

4

2 回答 2

0

从一堆段形状中近似出一个圆形。

于 2013-07-26T12:16:10.880 回答
0
_space = cpSpaceNew(); // setup the world in which the simulation takes place
        _space->elasticIterations = _space->iterations;
        _space->gravity = cpv(0.0f, GRAVITY); // initial gravity vector

// CGSize size = [[self view] bounds].size;
//setup the 'edges' of our world so the bouncing balls don't move offscreen
cpBody *edge = cpBodyNewStatic();
cpShape *shape = NULL;

int x1=384;
int x2=73;
int y1=191;
int y2=191;


for (int x=0 ; x<312; x++)
{
    CGPoint Point1 = CGPointMake(x1, y1);
    CGPoint Point2 = CGPointMake(x2, y2);

    NSLog(@"(%i,%i) And (%i,%i) ",x1,y1,x2,y2);

    shape = cpSegmentShapeNew(edge, Point1, Point2, 0.0f);
    shape->u = 0.1f; // minimal friction on the ground
    shape->e = 0.7f;
    cpSpaceAddStaticShape(_space, shape);
    x1--;
    y2++;

    // a body can be
}

x1=384;
x2=695;
y1=191;
y2=191;

for (int x=0 ; x<312; x++)
{
    CGPoint Point1 = CGPointMake(x1, y1);
    CGPoint Point2 = CGPointMake(x2, y2);
    shape = cpSegmentShapeNew(edge, Point1, Point2, 0.0f);
    shape->u = 0.1f; // minimal friction on the ground
    shape->e = 0.9f;
    cpSpaceAddStaticShape(_space, shape);
    x1++;
    y2++;
    // a body can be
}
x1=73;
x2=73;
y1=502;
y2=813;

for (int x=0 ; x<312; x++)
{
    CGPoint Point1 = CGPointMake(x1, y1);
    CGPoint Point2 = CGPointMake(x2, y2);
    shape = cpSegmentShapeNew(edge, Point1, Point2, 0.0f);
    shape->u = 0.1f; // minimal friction on the ground
    shape->e = 0.9f;
    cpSpaceAddStaticShape(_space, shape);
    y1++;
    x2++;
    // a body can be
}
x1=384;
x2=695;
y1=813;
y2=813;

for (int x=0 ; x<312; x++)
{
    CGPoint Point1 = CGPointMake(x1, y1);
    CGPoint Point2 = CGPointMake(x2, y2);
    shape = cpSegmentShapeNew(edge, Point1, Point2, 0.0f);
    shape->u = 0.1f; // minimal friction on the ground
    shape->e = 0.7f;
    cpSpaceAddStaticShape(_space, shape);
    x1++;
    y2--;
    // a body can be
}

我得到了使用此文档的解决方案我制作了一个圆形空间。谢谢你

于 2013-07-27T08:25:17.053 回答