无法缩放/缩放带有附加 SKPhysicsJoints 的 SKSpriteNode



我希望能够在我的游戏中"放大"和缩小,但是当我缩放父"世界"SKNode时,关节不会相应地缩放,因为它们必须添加到SKScene(这是根节点)。

更改 SKScene 的大小是有效的,但是我作为儿童拥有的任何 HUD 图形都会随之缩放。

我曾考虑过将我的HUD创建为SKView的孩子,但这似乎违背了Apple的建议。 我也失去了使用SKScene过渡的好处,最终处理了许多ViewController。

关于如何扩展 SKSpriteNode 并使其关节随之扩展的任何建议?

在 World 节点上模拟放大/缩小的最安全方法是对其进行缩放。 但是,正如您已经注意到的那样,缩放世界节点会破坏物理模拟,因为您实际上是在移动和缩放 SKScene 侧面的所有内容。 因此,如果将"世界"节点缩放到 0.5 以模拟缩小,您会注意到重力的效果是其 2 倍,并且下落速度要快得多。

解决方案是在物理模拟完成之前始终将世界比例设置为 1.0,然后将其更改回渲染前想要看到的内容。

我这样做的方法是在 -didEvaluateActions 和 -didSimulatePhysics 回调中执行此操作,如下所示:

-didEvaluateActions
{
  [myWorld setScale:1.0];    // must be 1.0 before physics!
}
-didSimulatePhysics
{
   [myWorld setScale:worldScale];   // now set correctly for rendering
}

最新更新