2

使沙粒在视图中动画的最佳方法是什么?本质上,我想用小沙粒填充 iOS 设备屏幕的一半,然后允许用户旋转和摇晃设备来指示沙子的位置。

假设我以前从未做过任何物理编程,谁能推荐一个教程或告诉我它是如何完成的?

谢谢,

询问。

更新: 我现在遇到了这个(虽然我的应该是 2D 的) - 我怎样才能将类似的东西带入我的应用程序?

4

2 回答 2

1

使用空间索引来查找最近的粒子以检查碰撞,并使用积分技术在力(加速度)-速度-位置之间进行转换,并且仅使用重力作为外力,这将为您提供沙盒。

如果您使用碰撞后检测,您将需要从粒子势中选择一个良好的排斥力。

我建议您使用截断 Lennar-Jones 势和 Verlet-Integrator。比 Runge-Kutta 的更容易,比 Euler 的更精确。因为它用于分子动力学。你不需要使用其他力量。只需使用排斥力、重力和壁力。

如果您的模拟器中有项目符号,则可以对它们使用欧拉积分。我认为这对于自由落体但不碰撞的沙粒是可以接受的。在它们相互关闭之后,最好使用 Verlet 或 Runge-Kutta。

我上面提到的所有假设你的积分步骤是如此之大以至于能量不守恒甚至减少。如果你的积分足够好以节省能量,你需要给你的粒子摩擦力来让沙子变慢,否则你的粒子就会到处爆炸。

于 2012-09-15T17:36:51.773 回答
0

如果你想在 iphone 上制作它,那么你必须考虑某些优化和技巧,因为 iPhone 不能真正模拟水或沙子。

你的诀窍是你的大部分工作都是画场景。

在 Box2D 中使用比沙粒大 10-20 倍的球创建场景。

iPhone 将能够模拟它。

然后你应该每个球画10-20个沙粒。

每一帧你都可以检查球是否与其他球发生碰撞。

如果球没有碰撞,那么这些沙粒就在空气中,你应该将它们拉到彼此一定距离上。

如果球与其他球碰撞,则粒子应一起渲染

您还可以检测边缘并在顶部渲染滑翔机沙边框。

于 2012-09-16T18:35:44.490 回答