1

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

改变 SKScene 的大小是可行的,但是我作为孩子的任何 HUD 图形都会随之缩放。

我曾考虑将我的 HUD 创建为 SKView 的子项,但这似乎与 Apple 的建议背道而驰。我也失去了使用 SKScene 转换的好处,并最终转而处理大量的 ViewController。

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

4

1 回答 1

2

在 World 节点上模拟放大/缩小的最安全方法是对其进行缩放。但是,正如您所注意到的,缩放 World Node 会破坏物理模拟,因为您正在有效地移动和缩放 SKScene 中的所有内容。因此,如果您将 World 节点缩放到 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
}
于 2014-07-09T19:05:22.060 回答