XNA - Simulated snow

本文关键字:snow Simulated XNA | 更新日期: 2023-09-27 18:00:54

这更像是一个问题,需要就我应该使用哪种模式/方法征求一些建议。我对这个问题做了一些调查,但结果并不理想。

从本质上讲,我对一款游戏有一个想法,其中关键的游戏机制是基于降雪——或者,在这个想法游戏的情况下——落下的粒子。

雪/颗粒需要从筛网上落下,但要堆积起来。问题是,当它们成一定角度时,我需要雪"滴下"桩的侧面,并继续积累。雪堆下面可能会有洞,雪必须掉出来——就像沙子从沙漏里掉下来一样。

我试过这是Box2d——很明显,对于10000个持续很长时间的微小粒子来说,Box2d不是正确的选择。2D盒子很快就嘎吱嘎吱地死了。

我试着在屏幕上绘制1px的位图,但每次更新都要处理10000次冲突,结果也很糟糕。

任何想法都将不胜感激。

干杯

XNA - Simulated snow

好吧,就像您发现的那样,没有任何现有的库会对您有所帮助,除非它专门针对您的场景。不幸的是,XNA没有太多可供选择的东西,而且现有的粒子系统库似乎都不支持粒子物理学。

所以你需要自己做很多工作。首先,你需要考虑你能做的所有优化。就像一条评论所说的,你不应该在每帧的所有粒子之间进行检查。你应该使用基于点的碰撞检查,而不是物理引擎通常使用的更花哨的东西。在这种情况下,应确保粒子始终大小相同(相对于参考坐标系,这并不意味着不能缩放(。当然,你需要跳过尽可能多的碰撞检查——你知道静止的粒子永远不应该被检查,就像那些两边都有相邻粒子的粒子一样——这让我想到了网格。也许你可以把整个"世界"表示为一个网格,并从这个角度简化逻辑——就像《我的世界》一样,你不同意吗?

无论如何,我意识到我有点漫无边际,但这是一个开放的主题……:(

在这个酷炫效果上花了很多钱(对于XNA和MonoGame(http://www.int6.org/development/cool-effects-for-xna-monogame/

没有雪的效果,但有一些你可以用来修改的兴趣效果。

是否可以监控物理引擎实际处理的粒子?如果是这样的话,如果它们的速度小于0.01或类似的东西,你有没有办法停止处理它们的物理,或者严格限制处理的东西?

如果你只处理需要处理的粒子,那么你可以随心所欲地处理,假设它们不是同时移动的!

如果这仍然是一个问题,那么听起来流体动力学解决方案可能更合适,因为流体动力学基本上是一大堆移动的小粒子。

以下是一些关于二维流体动力学的有趣信息:

http://www.ibiblio.org/e-notes/webgl/gpu/fluid.htm

你的物理引擎可能已经包含了你需要的东西。

相关文章: