我已经创建了一个椭圆形(2D),可以通过拖动变形,像橡胶或果冻一样弹性,能够与其他刚体碰撞和反弹。现在我可以通过拖动椭圆来改变它的形状。
我现在面临的问题是,椭圆不能以我想要的方式变形。期望的效果是,当用户点击椭圆时,椭圆上有一个固定的点,然后用户可以拖动椭圆,从而使其变得更长和更细(球的总大小不变)。当这种情况发生时,椭圆应该保持在其初始位置。
目前,我还没有找到一种方法,当椭圆形的形状发生拉伸时,将其固定在某个位置。
有没有办法用LiquidFun达到这样的效果呢?如果是这样的话,你对如何去做有什么建议吗?如果没有,我将非常感谢任何其他的建议。
发布于 2014-09-18 04:22:28
是。它是一个固体弹性粒子群。请参见:
http://google.github.io/liquidfun/
并选择弹性粒子以查看其实际效果。示例代码如下:
https://github.com/google/liquidfun/blob/master/liquidfun/Box2D/Testbed/Tests/ElasticParticles.h
创建粒子组如下所示:
b2CircleShape shape;
shape.m_p.Set(-1, 3);
shape.m_radius = 0.5f;
b2ParticleGroupDef pd;
pd.flags = b2_elasticParticle;
pd.groupFlags = b2_solidParticleGroup;
pd.shape = &shape;
pd.color.Set(0, 255, 0, 255);
m_particleSystem->CreateParticleGroup(pd);在Box2D中,你必须做一个椭圆形,而不是一个圆形。AFAIK,Box2D不支持椭圆作为核心形状,所以你可能需要用一个有很多边的b2PolygonShape近似。边的总数可能并不重要,因为它无论如何都会被“光栅化”成粒子。
https://stackoverflow.com/questions/25880857
复制相似问题