【问题标题】:SKShapeNode position line up with groundSKShapeNode 位置与地面对齐
【发布时间】:2014-10-23 21:47:00
【问题描述】:

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

    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

【问题讨论】:

  • 检查场景的缩放模式,它可能设置为不适合填充

标签: ios swift sprite-kit sknode


【解决方案1】:

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

SpriteKit coordinate system messed up

Problems understanding coordinate system SpriteKit using Swift

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

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

然后将尺寸设置为 320 x 568

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 1970-01-01
    相关资源
    最近更新 更多