0

cpSpaceShapeQuery 函数是如何工作的?我找不到任何关于它的文档。

安德烈亚

4

1 回答 1

1

是的...我从来没有时间记录...对不起。基本上,您创建一个 body 和 shape(都不需要添加到空间中)并使用它来像其他查询函数一样进行查询。

此代码片段在堆栈上复制一个主体和形状,然后将其模拟到它的第一个预测碰撞点,绘制路径。

    cpBody body = *(originalBody);  
cpPolyShape shape = *((cpPolyShape *)originalShape);
shape.shape.body = &body;

cpFloat dt = 1.0f/60.0f;
cpVect gravity = space->gravity;

int count = 0;
for(int i=0; i<300; i++){
    cpBodyUpdatePosition(&body, dt);
    cpBodyUpdateVelocity(&body, gravity, 1.0f, dt);

    if(cpSpaceShapeQuery(space, (cpShape *)&shape, NULL, NULL)){
        quads[count%maxQuads] = quad(body.p, body.rot, CGRectMake(0, 2*32, 64, 64), tsize);
        count++;

        break;
    }

    if(i%10==0){
        quads[count%maxQuads] = quad(body.p, body.rot, rect, tsize);
        count++;
    }
}
于 2011-06-30T19:01:09.670 回答