iphone cocos2d的花栗鼠 - 重心

Yoh*_* T. 1 iphone gravity chipmunk cocos2d-iphone

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

我是在正确的轨道上吗?

1)由于某种原因,我无法将身体的重心设置为特定值.有人有一个简单的解决方案吗?

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

谢谢你澄清一下.

约翰·T

Yoh*_* T. 5

没关系 !

我正在回答我自己的问题,因为它是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);
Run Code Online (Sandbox Code Playgroud)

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

使用此方法:

[sprite setTransformAnchor:ccp(27,54)];
Run Code Online (Sandbox Code Playgroud)

但请记住,坐标始于屏幕的左下角.但如果正确处理身体的物理,你就不必触摸精灵.

祝你好运!

约翰·T