【问题标题】:iphone cocos2d's chipmunk - Center of gravityiphone cocos2d 的花栗鼠 - 重心
【发布时间】:2009-09-06 22:38:28
【问题描述】:

这是我的问题。我有一个花栗鼠的刚体(一个直立的汽水罐),我想将它的重心改变到物体的底部,这样当对它的上部施加力时它可以落在它的侧面。

我在正确的轨道上吗?

1) 出于某种原因,我无法将 身体的重心 设置为特定值。请问谁有简单的解决方法?

2) 精灵的重心呢?我是否也需要更改它?如果有,怎么做?

感谢您澄清这一点。

Yohann T.

【问题讨论】:

    标签: iphone cocos2d-iphone chipmunk gravity


    【解决方案1】:

    没关系!

    我正在回答我自己的问题,因为那是 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)];
    

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

    祝你好运!

    Yohann T.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多