Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c iOS的沙物理_Objective C_Ios_Cocoa_Game Physics_Collision - Fatal编程技术网

Objective c iOS的沙物理

Objective c iOS的沙物理,objective-c,ios,cocoa,game-physics,collision,Objective C,Ios,Cocoa,Game Physics,Collision,在视图中设置沙粒动画的最佳方法是什么? 基本上,我想在iOS设备的屏幕上填充一半类似沙子的小颗粒,然后让用户旋转和晃动设备来指示沙子的位置 假设我以前从未做过任何物理编程,有人能推荐一个教程或向我展示它是如何完成的吗 谢谢, 询问 更新: 我现在发现我的应该是2D的-我怎么能把类似的东西带到我的应用程序中呢?用它来寻找最近的粒子来检查碰撞,用A来表示力-加速度-速度-位置之间的转换,只使用重力作为外部的四分之一将给你沙箱 如果使用碰撞后检测,则需要选择一个好的 我建议您使用截断的Lennar-J

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

假设我以前从未做过任何物理编程,有人能推荐一个教程或向我展示它是如何完成的吗

谢谢,

询问

更新: 我现在发现我的应该是2D的-我怎么能把类似的东西带到我的应用程序中呢?

用它来寻找最近的粒子来检查碰撞,用A来表示力-加速度-速度-位置之间的转换,只使用重力作为外部的四分之一将给你沙箱

如果使用碰撞后检测,则需要选择一个好的

我建议您使用截断的Lennar-Jones势和Verlet积分器。比龙格库塔更容易,比欧拉更精确,因为它用于分子动力学。你不需要使用其他力量。只需使用排斥力、重力和壁力

如果模拟器中有子弹,可以使用Euler积分。我认为这是可以接受的自由下落,但不碰撞沙粒。在他们彼此接近后,最好使用Verlet或Runge Kutta


我上面提到的都是假设你们的积分步骤是如此之大,以至于能量不守恒,甚至减少。如果你的集成足够好以节约能源,你需要给你的粒子以使沙子变慢,否则你会让你的粒子到处爆炸。

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

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

在Box2D中创建场景,球的大小是沙粒的10-20倍

iPhone将能够模拟它

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

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

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

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


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

请注意,干沙具有一个休止角,基本上就是从桩上方的小斜槽中滴出沙子时所形成的锥形桩侧面的坡度。圆形的沙粒有较浅的休止角,尖锐/有角的沙粒有较陡的休止角。您可能会从中得到一些进一步的想法。谢谢-我将看一看physics.stackexchange.com谢谢-我将在谈到编码部分时使用这些信息。但仍然不确定从哪里开始。。。。Box2d?我不确定是否会尝试对每个沙粒进行建模-计算密集型。相反,你可以把它看作是一种流体流动问题,尽管是非牛顿流体。相反-沙子在不移动时变硬,移动时变流体。啊!那太聪明了!固体沙子:可以!谢谢你的提示!