首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >box2D+ LiquidFun实现果冻效果

box2D+ LiquidFun实现果冻效果
EN

Stack Overflow用户
提问于 2014-09-17 09:23:32
回答 1查看 1.1K关注 0票数 1

我已经创建了一个椭圆形(2D),可以通过拖动变形,像橡胶或果冻一样弹性,能够与其他刚体碰撞和反弹。现在我可以通过拖动椭圆来改变它的形状。

我现在面临的问题是,椭圆不能以我想要的方式变形。期望的效果是,当用户点击椭圆时,椭圆上有一个固定的点,然后用户可以拖动椭圆,从而使其变得更长和更细(球的总大小不变)。当这种情况发生时,椭圆应该保持在其初始位置。

目前,我还没有找到一种方法,当椭圆形的形状发生拉伸时,将其固定在某个位置。

有没有办法用LiquidFun达到这样的效果呢?如果是这样的话,你对如何去做有什么建议吗?如果没有,我将非常感谢任何其他的建议。

EN

回答 1

Stack Overflow用户

发布于 2014-09-18 04:22:28

是。它是一个固体弹性粒子群。请参见:

http://google.github.io/liquidfun/

并选择弹性粒子以查看其实际效果。示例代码如下:

https://github.com/google/liquidfun/blob/master/liquidfun/Box2D/Testbed/Tests/ElasticParticles.h

创建粒子组如下所示:

代码语言:javascript
复制
        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近似。边的总数可能并不重要,因为它无论如何都会被“光栅化”成粒子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25880857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档