LiquidFun

liquidfun on github

https://github.com/google/liquidfun


gdx-liquidfun-extension

https://github.com/finnstr/gdx-liquidfun-extension


谷歌发布了开源2D物理引擎LiquidFun 1.1,该引擎包含流体模拟功能。按照谷歌的说法,它为游戏开发人员和UI设计人员带来了新的可能性。除Android、Linux和OS X之外,LiquidFun现在正式支持iOS。

LiquidFun是一款执行受约束刚体模拟的物理引擎,它以Box2D为基础,并在其上添加了基于粒子的流体模拟。按照谷歌的说法,LiquidFun可以用作Box2D的替代实现,这使得它很容易集成到任何用C++、Java或JavaScript编写的程序中。该库用平台无关的C++编写,可以用在任何有C++编译器的平台上。谷歌针对Android、Linux、OS X和Windows平台提供了构建LiquidFun库的方法、示例应用程序和单元测试。

以下是LiquidFun 1.1增加的部分新特性:

浏览器兼容性:谷歌使用Emscripten将LiquidFun转换成JavaScript。
支持iOS。
性能优化:LiquidFun 1.1借助部分用NEON编写的代码提升了在ARM处理器上的性能。
新版本还包含两个来自谷歌的、基于物理特性的开源游戏:用C++编写的VoltAir和通过SWIG绑定用Java编写的LiquidFunPaint。目前,两个程序均在US Play Store上提供,它们的源代码已经以开源方式发布,为开发人员提供了如何在应用程序中集成引擎的示例。

按照谷歌的说法,LiquidFun不止对游戏开发人员有用,对UI设计人员也有用。游戏开发人员可以使用物理引擎驱动新的游戏机制,并添加真实的物理效果,而通过向用户界面增加诸如重力、弹性和流体模拟等行为,设计人员可以用该库构建感觉真实的交互体验。

在2014年3月推出以来,LiquidFun已经集成进多个现有的游戏中,包括Cocos2d-X、Corona Pro和YoYo Games的GameMaker:Studio。


### Cocos Creator 中使用 LiquidFun 物理引擎 #### 集成 LiquidFun 到 Cocos Creator 工程 为了在 Cocos Creator 项目中集成 LiquidFun 物理引擎,开发者需先下载并配置好 LiquidFun 库。由于官方文档并未直接提及此过程[^1],通常情况下这涉及几个主要步骤: - 下载 LiquidFun 的最新版本源码包。 - 编译适用于目标平台(iOS, Android 或者 Web)的静态库文件。 - 将编译后的 .a 文件以及头文件加入到 Cocos Creator 原生插件目录。 #### 创建液体仿真场景 一旦成功集成了 LiquidFun 插件,在脚本层面可以通过 JavaScript 来操作物理世界中的物体属性和行为。下面是一个简单的例子展示怎样初始化一个带有液体仿真的环境: ```javascript cc.Class({ extends: cc.Component, properties: { // 定义一些公开变量以便于编辑器内调整参数 gravityY: { default: -9.8 }, particleRadius: { default: 0.07 } }, onLoad() { const worldAABB = new b2.AABB(); worldAABB.lowerBound.Set(-100, -100); worldAABB.upperBound.Set(100, 100); let debugDraw = new GLESDebugDraw(this.node.getContentSize().width / this.node.getScaleX()); let world = new b2World(worldAABB, new b2Vec2(0, this.gravityY), true); world.SetDebugDraw(debugDraw); // 启用粒子系统支持 var liquidFunParticleSystemDef = new b2ParticleSystemDef(); liquidFunParticleSystemDef.radius = this.particleRadius; var particleSystem = world.CreateParticleSystem(liquidFunParticleSystemDef); // 添加边界或其他刚体对象... setInterval(() => { for (let i = 0; i < 5; ++i) { // 在指定位置随机生成液滴 let pos = new b2Vec2(Math.random() * 20 - 10, Math.random() * 2 + 10); particleSystem.CreateParticle(pos.x, pos.y); } }, 1000); this.schedule(function () { world.Step(1 / 60, 8, 3); world.DrawDebugData(); world.ClearForces(); }.bind(this), 1 / 60); } }); ``` 这段代码展示了如何设置基本的重力场、定义粒子大小,并周期性地向场景中添加新的液滴以形成流动的效果。值得注意的是,这里假设已经完成了必要的原生层对接工作使得 `b2` 命名空间下的类可用[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值