【问题标题】:SpriteKit coordinate system messed upSpriteKit 坐标系统搞砸了
【发布时间】:2014-06-18 06:43:46
【问题描述】:

在纵向模式下,我在0,0 的位置创建了一个SKShapeNode。然而它似乎根本没有出现在屏幕上。

这是我现在使用的代码

let test = SKShapeNode(rect: CGRectMake(0, 0, 10, 10))
test.fillColor = SKColor.blackColor()
self.addChild(test)

背景颜色为白色,所以形状节点在屏幕上肯定会出现

屏幕上出现了 0 个节点? children.count 返回 1

这就是我展示场景的方式

override func viewWillLayoutSubviews () {
    super.viewWillLayoutSubviews()

    if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
        // Configure the view.
        let skView = self.view as SKView
        skView.showsFPS = true
        skView.showsNodeCount = true

        /* Sprite Kit applies additional optimizations to improve rendering performance */
        skView.ignoresSiblingOrder = true

        /* Set the scale mode to scale to fit the window */
        scene.scaleMode = .AspectFill

        skView.presentScene(scene)
    }
}

SKShapeNode 被绘制了,但它在屏幕之外?

编辑 1:我将缩放模式更改为 .AspectFit,这就是发生的事情
虽然游戏应该是纵向运行,但游戏是否强制横向运行?

【问题讨论】:

  • 检查scene.size 是否正确,缩放模式是否适合宽高比或调整填充大小。调试绘制节点计数仅计算屏幕上可见的节点,如果要计算场景图日志中的节点 children.count
  • 我在 Xcode 中的标准缩放模式是 .AspectFill,children.count 返回 1
  • 看起来场景是为横向而设计的,而应用程序是纵向的
  • 那我该如何解决呢?

标签: ios sprite-kit swift


【解决方案1】:

基于@fuzzygoat 的回答https://stackoverflow.com/a/24170460/1879382

只需打开GameScene.sks,然后将x 和y 的值更改为所需的适当值。 对我来说,我使用的是 320 x 568,因为我在 iPhone 5S 上运行游戏

【讨论】:

  • 应该是 320x568,除非你有理由让场景宽一点(2 像素)
  • 我的错,虽然@fuzzygoat 也说它是 320x569,但我会改变它
猜你喜欢
  • 1970-01-01
  • 2020-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多