ios - SKShapeNode 使用错误的宽度和高度

标签 ios swift sprite-kit skspritenode

最近我一直在创建一个游戏,我在屏幕上放了圆圈。但是,我注意到这些圆形不是圆形,而是椭圆形。 y 轴被拉伸(stretch),x 轴被收缩。为了弄清楚这个问题,我现在正在尝试用一个矩形进行调试。我使矩形具有相同的高度和宽度(正方形),但是,当变成 skshapenode 时,它​​不再是正确的形状。代码:

var testSquare = CGRect(x: CGRectGetMidX(self.frame), y: CGRectGetMidY(self.frame), width: 1, height: 1)

var squareNode = SKShapeNode(rect: testSquare)
println(testSquare.width)
println(testSquare.height)
println(squareNode.frame.width)
println(squareNode.frame.height)
self.addChild(squareNode)

这是打印出来的内容:

1.0
1.0
513.5
385.5

如果我将 testSquare 的高度和宽度都更改为 100,这就是打印的内容:

100.0
100.0
612.5
484.5

出于某种原因,方形节点的框架在 x 中增加了 512.5,在 y 中增加了 384.5。尽管在屏幕上出于某种原因,创建的矩形在 Y 轴上较长。也许框架不是我应该打印的数字,但不管屏幕上的形状是不是正方形。有谁知道这是为什么?非常感谢任何帮助!

最佳答案

您是否使用 sks 文件制作您的 SKView?或者你在你的 View Controller 中实例化它?重要的是让场景的尺寸正确。我知道这并没有直接回答您的问题,但如果您遇到奇怪的拉伸(stretch)和其他问题,也许您应该从这里开始并从那里开始调试。

这给了我正确的场景尺寸。

override func viewDidAppear(animated: Bool) {
    super.viewDidAppear(animated)

    // 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 */
    let scene = GameScene(size: skView.bounds.size)
    scene.scaleMode = .AspectFill

    skView.presentScene(scene)

}

关于ios - SKShapeNode 使用错误的宽度和高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27725318/

相关文章:

swift - 我在 SpriteKit 上的 scheduledTimer 有问题

ios - 分段控件不调用方法

iphone - iOS GameCenter 匹配器不工作

swift - println 使用 get 而不是使用 set,为什么?

ios - 使用 if var = 快速修改数组

swift - 有没有一种简单的方法可以将两个不同类型的对象存储在一个容器中?

ios - devops Pipelines 中的私有(private) Cocoapods 存储库

ios - 将按钮添加到导航栏标题 Swiftui

iOS 使 VPN 服务器地址可变

swift - 如何使屏幕上的对象快速旋转