XNA - 模拟雪

Dav*_*ish 8 c# xna game-physics

对于我应该使用哪种模式/方法请求一些建议,这更是一个问题.我对这个问题进行了一些调查 - 效果不佳.

基本上我对游戏有一个想法,其中关键的游戏机制基于落雪 - 或者,在这个想法游戏的情况下 - 下降粒子.

雪/颗粒需要从屏幕上掉下来 - 但堆积成堆.问题是,当它们是一定角度时,我需要下雪来"滴下"桩的两侧,并继续积累.在积雪覆盖的地方可能会打开洞,雪也不得不掉下来 - 想象沙子从沙漏中落下.

我已经试过这是Box2D的 - 很显然,Box2D的不是10000分的微小颗粒的正确选择 - 即持续很长一段时间.Box 2D很快就会死亡.

我尝试在屏幕上绘制1px位图,但每次更新处理10,000次碰撞时也证明性能很差.

任何想法,将不胜感激.

干杯

Ale*_*ven 1

好吧,就像您发现的那样,现有的库都无法为您提供帮助,除非它非常专门针对您的场景。不幸的是,XNA 没有太多可供选择的东西,而且看起来现有的粒子系统库都不支持粒子物理。

所以你需要自己做很多工作。首先也是最重要的是,您需要考虑可以进行的所有优化。就像评论所说,您不应该在每帧的所有粒子之间运行检查。您应该使用基于点的碰撞检查,而不是物理引擎通常使用的更高级的东西。在这种情况下,您应该确保粒子始终具有相同的大小(相对于参考坐标系,这并不意味着您无法缩放)。当然,您需要跳过尽可能多的碰撞检查 - 您知道处于静止状态的粒子永远不应该被检查,就像那些在所有侧面都有相邻粒子的粒子一样 - 这让我想到了网格。也许你可以将整个“世界”表示为一个网格,并从这个角度简化逻辑 - 与 Minecraft 几乎相同,你不同意吗?

不管怎样,我意识到我有点漫无目的,但这是一个开放的话题......:)