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