花栗鼠碰撞太软
chipmunk collision too soft
本文关键字:碰撞 更新时间:2023-10-16
我是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);
所以这些物体在碰撞,它太软了。我可以以某种方式让它看起来像两块石头互相撞击吗?
您必须使用的是花栗鼠 5。您需要直接设置字段,例如 shape->e = 1.0。
吸气器/设置器功能是花栗鼠 6 的一部分。您仍然可以直接设置字段,但建议不要这样做,因为 setter 函数会在更改值时自动唤醒对象。
从文档中:
void cpShapeSetElasticity(cpShape *shape, cpFloat value)
形状的弹性。值 0.0 表示不反弹,而值 的 1.0 将给出"完美"的反弹。但是由于不准确 但是,不建议使用 1.0 或更高版本进行模拟。这 碰撞的弹性是通过将弹性相乘来找到的 各个形状在一起。
这有帮助吗?
相关文章:
- 落砂模拟碰撞检测C++和SFML
- SFML 碰撞永远不会在我的系统中注册
- 在均匀网格中处理碰撞
- 平台游戏 - 下车时避免与平台碰撞
- AABB 碰撞使实际精灵的大小翻倍
- 具有随机值的多个对象及其碰撞的 SFML
- SFML 中的重力和碰撞检测
- 我的碰撞检测中的奇怪行为
- Box2D Contact Listener碰撞仅间歇性工作
- 如何为球形物体和三角形地形提供高效的碰撞检测和响应
- 同时与两个片段着色器发生碰撞
- 2D 障碍物碰撞
- 可破坏的网格块会导致奇怪的碰撞
- ptrdiff_t typedef 碰撞 - 谷歌测试和英特尔蟒蛇
- 玩家移动和碰撞之间的交互问题
- 圆形与方形碰撞检测以及需要响应C++ |OpenGL。我的问题就是这个"I need to keep the circle outside the square"
- 视觉 SIGSEGV 在C++碰撞预防
- 球的预测碰撞
- 矢量迭代器在碰撞时不可递增
- Cocos2d-x TiledMap,在调用 getLayer() 获取碰撞层时返回一个 nullptr?