在花栗鼠中制作圆角空间

时间:2013-07-26 06:50:10

标签: objective-c chipmunk

_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);

使用这个使屏幕周围的矩形空间但我想让它成圆形。 欢迎任何建议

2 个答案:

答案 0 :(得分:0)

从一堆线段形状中近似圆形。

答案 1 :(得分: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
}

我有一个解决方案Using this Document我创造了一个圆角空间。谢谢