SpriteKit Swift定位HUD

时间:2015-04-22 23:07:43

标签: swift sprite-kit coordinates

我试图将一个简单的黑盒子用作游戏的HUD元素的参考。但它的定位总是非常关闭,主要是盒子的y位置。我试图将我的hud box定位在屏幕的最顶部并产生整个宽度,但CGRectGetMaxY(screenSize)将它定位在屏幕的最底部。

var hudLayer = SKSpriteNode(color: SKColor.blackColor(), size: CGSizeMake(self.size.width, 200))
            hudLayer.anchorPoint = CGPointMake(0, 1)
            hudLayer.position = CGPointMake(CGRectGetMinX(screenSize), CGRectGetMaxY(screenSize))
            hudLayer.zPosition = 100
            self.addChild(hudLayer)

我是如何设法让我的maxY坐标位于最底部的?我很困惑,并尝试过其他y定位方法(self.size.height)。到目前为止,我发现自己必须将CGRectGetMaxY(screenSize)乘以3.6以使其达到顶峰,但我不愿意。

关于为什么我的y坐标令人难以置信地关闭的任何解释?我设置了锚点,因此它应该使用左上角来定位自己。另一个问题是,我不能在4s上看起来一样。在4s模拟器上,尽管使用screenSize来计算相对位置,但是hud bar看起来要低得多。

感谢。

1 个答案:

答案 0 :(得分:1)

您的问题听起来似乎SKScene的尺寸与SKView尺寸相同。要解决此问题,您应该设置场景的大小和比例模式:

scene.scaleMode = .AspectFill
scene.size = skView.bounds.size

最简单的设置位置可能在GameViewController,当您设置SKScene时。或者,您也可以在didMoveToView。{/ p>中使用SKScene方法进行设置