swift - 如何更改 SKScene 的呈现 View ?

标签 swift sprite-kit

我已经检查了类引用和其他几个 S.O.发布并且似乎无法按照我需要的方式获得我的场景。到目前为止,我发现可以将 SKScene.size 属性设置为某个 CGSize, View 将显示该大小的 SKScene。但是,当我更改 size 属性的值时,我的设备屏幕上的视觉效果并没有发生任何变化。

我创建了一个 SKShapeNode 作为我的“世界”,并将其大小设置为 7000 单位 x 7000 单位

world = SKShapeNode(rectOfSize: CGSizeMake(7000, 7000))

当我加载场景时,正如预期的那样,只显示了世界的一小部分。

我知道这与屏幕的高度和宽度不成比例,但为了简单起见,如何更改 SKScene 以在设备屏幕上显示整个 7000 x 7000 的世界?

最佳答案

您不应该以这种方式改变场景的大小。创建一个 7000*7000 点的场景将使 Retina iPad 以每秒 60 次的速度渲染 98 兆像素。哎哟。

缩放子节点

只需创建一个新的 SKnode sceneContents 并将您的 SKShapeNode 作为子节点添加到该节点。当您希望“缩放”时,缩小 sceneContents 节点(通过 SKNode 的 xScaleyScale 属性)。您可以为此使用 SKAction,因此它既漂亮又流畅。

SKCameraNode

如果您可以迁移到 iOS 9,我建议您查看 SKCameraNode .这目前仍处于测试阶段,但效果很好。 只需创建一个 SKCameraNode,将其添加到场景并将其设置为场景的相机。

SKCameraNode *camera = [SKCameraNode new];
[self.scene addChild:camera];
self.scene.camera = camera;
camera.xScale = 10.f;
camera.yScale = 10.f;

嗯,我应该在某个时候学习 Swift。尽管如此,这个概念应该是清楚的。您可以使用 SKAction 通过动画操作相机节点。

关于swift - 如何更改 SKScene 的呈现 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32062888/

相关文章:

ios - 即使调用了 removeAllChildren,SpriteKit 中的内存也会增加

swift - SKEmitterNode 的子类不调用 init 或 deist

swift - 从假定为 Int 或 Double 的任何对象转换为 double

ios - 检查 Swift 中是否存在 XML 元素

swift - 扩展 SkShapeNode 以获取 n x m 矩阵中的矩形位置

ios - 呈现 SpriteKit 场景时出现内存泄漏

swift - OSX/Swift 获取最前面运行的应用程序

swift - 错误 : Cannot assign to '...' in 'self'

swift - 当玩家再次玩游戏时,如何修复 SpriteKit Swift 上的分享按钮 Share Button 出现在游戏场景中?

swift - 使用 swift 停止 SpriteKit 中的 Action