【问题标题】:Reproducing exact same physics simulation重现完全相同的物理模拟
【发布时间】:2015-10-21 13:40:57
【问题描述】:

我正在一个盒子上运行物理模拟。当节点停止时,我改变它的位置,设置它的旋转并施加力。所有这 3 个参数总是相同,但物理模拟不同。差异不大,但肯定很明显。如何避免这种情况并每次都重现完全相同的物理模拟?感谢帮助

/// this code gets executed repeatedly
        starNode.physicsBody?.velocity = SCNVector3Zero
        applyForce() ///always the same
        starNode.eulerAngles = SCNVector3Make(0, Float(90*(M_PI)/180.0), 0)
        starNode.position = SCNVector3Make(-0.562, 5.578, -18.529)

【问题讨论】:

  • 你能用 3 个不同的节点(startNode1、startNode2、startNode3)试试吗?另外,我认为 applyForce 函数调用需要在最后。

标签: ios game-physics scenekit


【解决方案1】:

applyForce() 的调用时间与您设置速度的时间之间存在细微差别。

如果在设置物理体的速度和施加力之间存在一定量的阻力、重力或任何其他影响物理体速度的力,则结果会略有不同,因为对物体施加力任何速度都是相加的。

因此,每次盒子在施加力之前或多或少地减慢一点时,在施加的力的增加中,您会得到稍微不同的结果。

【讨论】:

  • 换句话说,没有办法重现完全相同的物理模拟?
  • 不,您可以无限重复地复制物理模拟。但是您确实需要考虑事件之间时间偏差的影响,以消除不良结果。
  • 对不起,我还是不知道该怎么办。有人如何考虑时间偏差的影响?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-20
  • 2016-01-24
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
  • 2011-08-08
相关资源
最近更新 更多