没关系!
我正在回答我自己的问题,因为那是 16 小时前,我必须自己找到它(是的,我花了这么长时间才弄明白,真是浪费时间)。幸运的是,我将分享解决方案,这样您就不必花费那么多时间来弄清楚了。
1) 出于某种原因,我无法将身体的重心设置为特定值。请问谁有简单的解决方法?
答案:你不能改变物体的重心,因为在真实的模拟世界中,重心是不可修改,除非你真的变形了物体! ! !
这样做的方法不是创建一个具有“盒子”形状的主体。您必须使用顶点创建对象,以便它可以受到任何类型的物理影响,而不仅仅是运动。
这是我用来在对象周围创建一个框的代码:
int num = 4;
cpVect verts[] = {
cpv(-15,-15),
cpv(-15, 15),
cpv( 15, 15),
cpv( 15,-15),
};
body = cpBodyNew(1.0f, cpMomentForPoly(1.0f, num, verts, cpvzero));
body->p = cpv(-280, 240);
cpSpaceAddBody(space, body);
shape = cpPolyShapeNew(body, num, verts, cpvzero);
shape->e = 0.0f; shape->u = 1.5f;
shape->collision_type = 1;
cpSpaceAddShape(space, shape);
2) 精灵的重心如何?我是否也需要更改它?如果有,怎么做?
使用这个方法:
[sprite setTransformAnchor:ccp(27,54)];
但请记住,坐标从屏幕的左下角开始。但如果你正确处理身体的物理,你就不必触摸精灵。
祝你好运!
Yohann T.