iphone cocos2d的花栗鼠 - 重心

时间:2009-09-06 22:38:28

标签: iphone cocos2d-iphone chipmunk gravity

这是我的问题。我有一个花栗鼠的刚体(苏打水可以站立起来),我想将它的重心改变到物体的底部,这样当它的上部施加一个力时它就会落在它的侧翼上。

我是否在正确的轨道上?

1)由于某些原因,我无法将正文的重心设置为特定值。任何人都有一个简单的解决方案吗?

2)精灵的重心怎么样?我是否还需要更改它?如果是这样,怎么样?

感谢您澄清。

Yohann T。

1 个答案:

答案 0 :(得分:5)

没关系!

我正在回答我自己的问题,因为它是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。