ios - 将 SpriteKit 物理模拟推进到稳定的静止状态

标签 ios sprite-kit

我正在使用 SprikeKit 的物理学来模拟一组相当简单的球,这些球被困在一个包含圆圈中。初始世界状态并不稳定,因为当模拟开始时,球会相互远离、反弹,最终达到静止状态。

我想立即将物理模拟推进到这个静止状态,这样用户看到的第一件事就是一个稳定的世界(直到他们自己扰乱它)。 las,我找不到有关执行此操作的任何文档。我唯一能想到的尝试就是在短时间内将模拟速度设置到一个愚蠢的高水平,但这看起来很老套。有没有我忽略的方法?

编辑:好的,我已经尝试过加快模拟速度。不幸的是,这只会产生模拟误差,以至于永远无法达到稳定状态。即使启用了精确的碰撞检测,物体也会相互穿过,相互卡住,并且在没有收敛到解决方案的情况下四处晃动。即使以相对适度的 10 倍加速,我也无法获得稳定的解决方案。

当然,在以自然速度运行模拟的同时隐藏 View 是可行的。但我不能真正使用这样的解决方案,因为它会在显示 UI 时产生大约 2 秒的延迟。

最佳答案

没有您可以手动运行的模拟步骤方法。

如您所说,设置模拟速度可能会起作用。否则,您可能只需要将 View 隐藏在“毯子” Sprite 下方,直到物理模拟稳定下来。前提是它不会超过几十帧左右。

关于ios - 将 SpriteKit 物理模拟推进到稳定的静止状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21047893/

相关文章:

ios - 背景颜色在多个单元格选择 Swift 中自动更改

ios - 基于 Swift SpriteKit 分数更改背景

ios - EXC_???在执行 executeFetchRequest 时

ios - 从节点滑动时的 RemoveAction

ios - 使用 SpriteKit 沿圆弧旋转 SKSpriteNode

ios - CADisplayLink 的时间戳与 1/60

ios - 如何从 AudioUnits C 函数调用 Objective-C 方法? (iOS)

ios - SpriteKit 支持不同的屏幕尺寸

ios - SKVideoNode(嵌入在 SKScene 中)作为 Scene Kit 节点的纹理不起作用

swift - 1 个大的 sktilemapnode 或更小的 sktilemapnode