这是我的问题。我有一个花栗鼠的刚体(一个直立的汽水罐),我想将它的重心改变到物体的底部,这样当对它的上部施加力时它可以落在它的侧面。
我在正确的轨道上吗?
1)由于某种原因,我无法将身体的重心设置为特定值。请问有人有简单的解决方法吗?
2)精灵的重心呢?我是否也需要更改它?如果是这样,怎么做?
谢谢你澄清这一点。
约翰·T。
这是我的问题。我有一个花栗鼠的刚体(一个直立的汽水罐),我想将它的重心改变到物体的底部,这样当对它的上部施加力时它可以落在它的侧面。
我在正确的轨道上吗?
1)由于某种原因,我无法将身体的重心设置为特定值。请问有人有简单的解决方法吗?
2)精灵的重心呢?我是否也需要更改它?如果是这样,怎么做?
谢谢你澄清这一点。
约翰·T。
没关系 !
我正在回答我自己的问题,因为那是 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)];
但请记住,坐标从屏幕的左下角开始。但是如果你正确处理身体的物理,你就不必触摸精灵。
现在祝你好运!
约翰·T。