这是我的问题。我有一个花栗鼠的刚体(一个苏打水可以站起来),我想改变它的重心到物体的底部,这样它可以在其上部施加力时落在它的侧面。iphone cocos2d的花栗鼠 - 重心
我在正确的轨道上吗?
1)出于某种原因,我无法将机身的重心设置为特定值。任何人有一个简单的解决方案,
2)那么雪碧的重心?我是否也需要更改它?如果是这样,怎么样?
谢谢你澄清。
Yohann T.
这是我的问题。我有一个花栗鼠的刚体(一个苏打水可以站起来),我想改变它的重心到物体的底部,这样它可以在其上部施加力时落在它的侧面。iphone cocos2d的花栗鼠 - 重心
我在正确的轨道上吗?
1)出于某种原因,我无法将机身的重心设置为特定值。任何人有一个简单的解决方案,
2)那么雪碧的重心?我是否也需要更改它?如果是这样,怎么样?
谢谢你澄清。
Yohann T.
没关系!
自16个小时前我开始回答我自己的问题,并且我自己找到了它(是的,花了我很长时间才弄清楚,多么浪费时间)。幸运的是,我将分享这个解决方案,这样你就不用花那么多的时间去搞清楚。
1)出于某种原因,我很难将身体的重心设置为特定值。任何人有一个简单的解决方案,
答:你不能改变一个物体的重心,因为在一个真实的模拟世界中,重心是NOT MODIFIABLE,除非你真的变形了物体! ! !
这样做的方式,不是创建一个“盒子”形状的身体。您必须使用顶点创建对象,以便它可以受到任何物理类型的影响,而不仅仅是移动。
这里是我用来创建对象周围的框代码:
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.