2009-09-06 35 views
1

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

我在正确的轨道上吗?

1)出于某种原因,我无法将机身的重心设置为特定值。任何人有一个简单的解决方案,

2)那么雪碧的重心?我是否也需要更改它?如果是这样,怎么样?

谢谢你澄清。

Yohann T.

回答

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.