我有兴趣尝试为2D游戏创建逼真的流体(水)。这场比赛类似于Terraria。我听说你怎么能在场景上拍下一堆碰撞粒子并在场景上渲染,瞧瞧真实的动作水。
Terraria使用的是基于水的水,我不喜欢它..我想要更先进的东西。
我考虑使用子弹3D物理(box2d有限制我会命中)。对于非碰撞的粒子效果,我正在考虑使用像SPARK这样的东西,因为我认为它会给我两全其美的效果。
我正在考虑的问题是,每个块是16x16,所以在1600x900场景中,大约有5千块。
所以我需要告诉物理引擎这些瓷砖是可碰撞的。当然,有空瓦被认为是不可碰撞的。
有没有人有这方面的想法?语言是C ++,但我怀疑它是否相关。
编辑:我想我将不得不陷入困境并使用基于网格的水。我想,回想起来,基于粒子只会让一切变得更加困难,但却有什么好处呢?
答案 0 :(得分:1)
您的问题是关于平铺液体,但您似乎实际上在询问基于粒子的方法。
如果是这种情况,那么您正在寻找的是“平滑粒子流体动力学”,或SPH,这是一种非常流行的实时二维和三维流体模拟技术。
是的,它基本上只是一个粒子系统,每个粒子以合理的(数学上稳定的)方式响应环境中的力(重力,碰撞等),并结合约束,它们必须保持一定的距离为了使液体不可压缩。
您可以将粒子渲染为点,如果您有足够的粒子,或者您可以将它们用作派生曲面的源(例如使用行进立方体,但在2D中我不会担心)。
http://en.wikipedia.org/wiki/Smoothed-particle_hydrodynamics
它具有相对容易编码的优势,并且确实可以在GPU上加速。
事实上,我认为它们可能比尝试某种基于磁贴的方法更好,而且你会得到一些更有趣的结果,例如喷射,踢在物体边缘的波浪等等。它也不是很难得到令人愉快的工作,我会试一试。