【问题标题】:SpriteKit Swift Positioning HUDSpriteKit Swift 定位 HUD
【发布时间】:2015-04-23 07:34:21
【问题描述】:

我正在尝试放置一个简单的黑匣子,以用作游戏 HUD 元素的参考。但是它的定位总是很不对劲,主要是盒子的y位置。我试图将我的 hud 框定位在屏幕的最顶部并生成整个宽度,但 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 看起来要低得多。

谢谢。

【问题讨论】:

  • 看看这个,问题是关于 iPad 和 iPhone,但你的问题可能是一样的。 stackoverflow.com/questions/29451131/…
  • 正如其他人所说,您的场景看起来正在缩放。要修复它,请参见此处stackoverflow.com/a/25256339/2158465。但是,如果您想保持场景按原样缩放,则需要相对于视图定位节点,请参阅此处stackoverflow.com/a/29171224/2158465
  • 第二个链接实际上与我的问题最相关,因为我也在开始时设置了分辨率——除了我的是横向视图。谢谢!
  • @Tyxc 好的,很酷,祝你好运。

标签: swift sprite-kit coordinates


【解决方案1】:

您的问题听起来像是您的SKScene 的大小与您的SKView 的大小不同。要解决此问题,您应该设置场景的大小和缩放模式:

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

当您设置SKScene 时,最简单的设置位置可能是在您的GameViewController 中。或者,您可以在 didMoveToView 方法中设置它,在您的 SKScene 中。

【讨论】:

  • 哇哦。我从来没有想过这可能是一个问题,我总是认为它是自动计算的。谢谢!我现在就试试看!
  • 是的,场景的大小将是您在场景的 .sks 文件中设置的大小。也许你的问题会在未来得到解决,但目前 sprite-kit 并不像 UIKit 那样真正支持不同的屏幕尺寸。
  • 我刚刚在我的 GameViewController 中更改了它,现在一切都变得不成比例了。我要看看我是否应该在我的代码中缩小所有内容。希望这行得通!
  • 最后成功了吗?你有没有做任何事情来扩大节点?
  • 并非如此。我的代码是这样设置的:stackoverflow.com/questions/29161881/… 所以,最后,通过设置 skView 大小来调整所有内容的工作量要大得多。但现在我知道那是一回事。 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
  • 1970-01-01
  • 1970-01-01
  • 2016-07-14
  • 1970-01-01
相关资源
最近更新 更多