花栗鼠:如何更新形状?

时间:2013-07-29 10:45:10

标签: chipmunk

如何在chupmunk中更新Space我的代码是:

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

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

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

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

如果球触及底部形状Ball touch,像这个after collosion 球上升但底部形状被移除并显示绿线,我想要但我不知道如何从身体中移除形状。欢迎任何人提出建议。

2 个答案:

答案 0 :(得分:0)

所以有三件事。

1)不推荐使用cpSpace [Add | Remove] StaticShape()函数,而应该使用cpSpace [Add | Remove] Shape()函数。

2)如上所述,cpSpaceAddShape()将为空格添加形状。如果要删除它,请调用cpSpaceRemoveShape()。除此之外别无其他。

3)Chipmunk不做任何图形,所以如果你想绘制绿线,你需要使用图形或渲染库提供的任何功能。

答案 1 :(得分:-1)

cpSpaceRemoveStaticShape(_space, shape4);