_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);
使用这个使屏幕周围的矩形空间但我想让它成圆形。 欢迎任何建议
答案 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我创造了一个圆角空间。谢谢