我希望能够在我的游戏中"放大"和缩小,但是当我缩放父"世界"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
}