Физика бурундука: cpSpaceShapeQuery
Как работает функция cpSpaceShapeQuery? Я не могу найти какой-либо документ об этом.
Andrea
1 ответ
Решение
Да... Я так и не удосужился документировать это... Извините. По сути, вы создаете тело и форму (ни один из них не должен быть добавлен в пространство) и используете их для запроса, как и другие функции запроса.
Этот фрагмент кода создает копию тела и фигуры в стеке, а затем имитирует их в своей первой предсказанной точке столкновения, рисуя путь по ходу.
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++;
}
}