C++ 花栗鼠撞得太软了

C++ 花栗鼠撞得太软了,c++,cocos2d-iphone,physics,chipmunk,cocos2d-x,C++,Cocos2d Iphone,Physics,Chipmunk,Cocos2d X,我对cocos2d的物理学还不熟悉。我用的是花栗鼠,当两个物体碰撞时,它会变得“柔软”,就像海绵或橡胶做的一样 我的代码: cpInitChipmunk(); space = cpSpaceNew(); space->gravity = cpv(0, 0); schedule(schedule_selector(HelloWorld::step), 1.0f/60.f); astroBody = cpBodyNew(100, INFINITY); astroBody->

我对cocos2d的物理学还不熟悉。我用的是花栗鼠,当两个物体碰撞时,它会变得“柔软”,就像海绵或橡胶做的一样

我的代码:

cpInitChipmunk();  
space = cpSpaceNew();  
space->gravity = cpv(0, 0);  
schedule(schedule_selector(HelloWorld::step), 1.0f/60.f);
astroBody = cpBodyNew(100, INFINITY);  
astroBody->p = cpv(512,384);
cpSpaceAddBody(space, astroBody);
int num2 = 8;
cpVect vertsAstro[] =  {
    cpv(-17.0f, -44.9f),
    cpv(-29.5f, -33.2f),
    cpv(-32.9f, -13.1f),
    cpv(-24.0f, 11.7f),
    cpv(24.6f, 11.5f),
    cpv(32.9f, -12.9f),
    cpv(29.3f, -33.1f),
    cpv(17.0f, -44.7f)
};
astroShape = cpPolyShapeNew(astroBody, num2, vertsAstro, cpv(0,0));
astroShape->e = 0.0f;
astroShape->u = 0.0f;
astroShape->collision_type = 0; 
astroShape->data = player;
cpSpaceAddShape(space, astroShape);

cpBody *box = cpBodyNew(INFINITY, INFINITY);  
box->p = cpv(z->getPosition().x+32, z->getPosition().y+32); 
int num = 5;
cpVect verts[] = {
    cpv(-32, -32),
    cpv(-32, 32),
    cpv(32, 32),
    cpv(32, -32),
    cpv(-32, -32)
};
cpShape *boxShape = cpPolyShapeNew(box, num, verts, cpv(0,0));
boxShape->e = 0.0f;
boxShape->u = 0.0f;
boxShape->collision_type = 1;  
boxShape->data = z;
cpSpaceAddStaticShape(space, boxShape);
所以这些物体在碰撞,而且太软了。我能让它看起来像两块石头互相撞击吗?

来自文档:

void cpShapeSetElasticity(cpShape*shape,cpFloat值)

形状的弹性。值为0.0时不会出现反弹,而值为 1.0将提供“完美”的反弹。然而,由于数据不准确 但是,不建议使用1.0或更高版本进行模拟。这个 碰撞的弹性是通过乘以碰撞的弹性来计算的 将各个形状组合在一起


这有帮助吗?

你一定在用花栗鼠5。您需要直接设置字段,例如shape->e=1.0


getter/setter函数是Chipmunk 6的一部分。您仍然可以直接设置字段,但建议不要这样做,因为setter函数在更改值时会自动唤醒对象。

我认为这是不推荐使用的,或者类似的:
'cpshapetelasticity':找不到标识符
我通过设置播放器的速度来碰撞播放器和对象(
astroBody->v=vector;
)这是每一个滴答声。我想这可能是问题所在。好的,我解决了。我现在使用cpBodyApplyForce(),现在它工作得很好。现在物体碰撞很厉害,就像我想要的那样。直接设置速度太多了。