无法使用附加的SKPhysicsJoints缩放/缩放SKSpriteNode

时间:2014-04-07 00:02:23

标签: ios sprite-kit skphysicsbody skphysicsworld

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

更改SKScene的大小可以正常工作,但是随着孩子们的扩展,我所拥有的任何HUD图形都会随之缩放。

我考虑过将我的HUD创建为SKView的孩子,但它似乎违背了Apple的建议。我也失去了使用SKScene转换的好处,并最终处理了大量的ViewControllers。

有关如何缩放SKSpriteNode并使其关节随之缩放的任何建议?

1 个答案:

答案 0 :(得分:2)

在World节点上模拟放大/缩小的最安全方法是缩放它。但是,正如您所注意到的那样,缩放World Node会破坏物理模拟,因为您可以有效地移动和缩放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
}