0

我只是想画一个矩形并将其放在屏幕的左下角

    var rectW:CGFloat  = CGFloat(200.0)
    var rectH:CGFloat = ceil(self.frame.height * 0.15)

    var rect = SKShapeNode(rectOfSize: CGSize(width: rectW, height: rectH));

    let posX:CGFloat = 0.0 + (rect.frame.width / 2)
    let posY:CGFloat = self.frame.height - (self.frame.height - rect.frame.height)

    rect.position = CGPointMake(posX,posY)
    rect.fillColor = SKColor(red: 0.0, green: 0.0, blue: 0.0, alpha: 1.0)
    rect.lineWidth = 1

    self.addChild(rect)

问题是即使我相信所有的数学都是正确的,矩形在屏幕下方大约有 38 个点/像素,如下图所示(白色边框显示限制)。

供您参考,这里是位置、高度和宽度的输出。

PosX: 100.5
PosY: 117.0
Rect Width: 201.0
Rect Height: 117.0
Frame Height: 768.0
Frame Weight: 1024.0

屏幕下方的矩形

如果我简单地采用这条线但添加 38 点/像素它可以工作,但为什么呢?有什么我想念的吗?

    let posY:CGFloat = self.frame.height - (self.frame.height - rect.frame.height) + 38

矩形在正确的位置

4

1 回答 1

0

我通过以下两个答案找到了答案:

SpriteKit 坐标系统搞砸了

使用 Swift 理解坐标系 SpriteKit 的问题

问题在于GameScene.sks它的大小设置不同。

打开GameScene.sks并转到“显示 SKNodeInspector”应该是屏幕右上角的第三个框。

然后将尺寸设置为 320 x 568

保存然后运行。应该工作。

于 2014-10-24T15:11:34.303 回答